0
foo/3은 두 개의 목록으로 무엇인가를 수행하고 또 다른 결과를 출력하는 술어입니다.프롤로그의 재귀가 발생하지 않는다고 생각합니다.
foo([], Ys, Zs) :-
append(Zs, Ys, Final),
write(Final),
% ?
foo([X|Xs], Ys, Zs) :-
stuff(X, Ys, NewYs, NewZs),
foo(Xs, NewYs, NewZs).
foo ([1,2,3], [a, b, c], L)와 같은 최상위 레벨 호출에서 Final을 L로 지정하고 싶습니다. 나는 추적을 보았다, 나는 뒤로 뭔가를하고있는 것 같다;
...
Exit: (9) write([c]) ?
Exit: (8) foo([], [], [c]) ?
Exit: (7) foo([c], [], []) ?
L = [].
구체적으로 * 수행 할 작업 *에 대해 설명하면이 질문의 대답이 훨씬 쉬울 수 있습니다. –