これが私の実装ですflatten/2
:
flt([], []).
flt([H|L], [H|X]):-
not(is_list(H)),
flt(L, X).
flt([H|L], X):-
append(R, F, X),
flt(H, R),
flt(L, F).
期待される結果は次のとおりです。
?- flt([1,[2,3,[4,5],6],7], X).
X = [1, 2, 3, 4, 5, 6, 7]
ただし、;
スタック制限に達すると超過します。なぜこれが起こるのですか?無限再帰はどこにありますか?
ありがとう。