1

これが私の実装です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]

ただし、;スタック制限に達すると超過します。なぜこれが起こるのですか?無限再帰はどこにありますか?

ありがとう。

4

1 に答える 1