私は次のコードを持っています。逆のリストを作成しようとしています。しかし、それは機能しません。
reverse([],[H|T]).
reverse([H|T],Z) :- reverse(T,[H|Z]).
私はこれをプロローグで実行し、これを取得します:
1 ?- trace, reverse([1,2,3],X).
Call: (7) reverse([1, 2, 3], _G396) ? creep
Call: (8) reverse([2, 3], [1|_G396]) ? creep
Call: (9) reverse([3], [2, 1|_G396]) ? creep
Call: (10) reverse([], [3, 2, 1|_G396]) ? creep
Exit: (10) reverse([], [3, 2, 1|_G396]) ? creep
Exit: (9) reverse([3], [2, 1|_G396]) ? creep
Exit: (8) reverse([2, 3], [1|_G396]) ? creep
Exit: (7) reverse([1, 2, 3], _G396) ? creep
true.
これにより、[1,2,3]ではなく[3,2,1]が表示されます。ここで何が問題になっていますか?