如何评估prolog谓词作为参数传递的结果?我正在尝试编写代码来反转列表中的元素对:
swap([A,B,C,D,E,F],R).
Run Code Online (Sandbox Code Playgroud)
我想要结果:
[B,A,D,C,F,E]
Run Code Online (Sandbox Code Playgroud)
但我得到了这个结果:
append(append(append([],[B,A],[D,C],[F,E])))
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
swap(L,R) :- swapA(L,[],R).
swapA([],A,A).
swapA([H,H2|T],A,R) :- swapA(T, append(A,[H2,H]), R).
Run Code Online (Sandbox Code Playgroud)
谢谢.
几件事:
':['A','B','C','D','E','F']这是一个建议:
swapA([], []).
swapA([X, Y|T], [Y, X|R]) :- swapA(T, R).
Run Code Online (Sandbox Code Playgroud)
如果您希望在列表中包含奇数个元素时保留谓词,请考虑添加另一个基本案例:
swapA([X], [X]).
Run Code Online (Sandbox Code Playgroud)