我正在尝试编写一个谓词来从 Prolog 中的有序列表中删除元素。这是家庭作业的一部分,我对 Prolog 的语义一般如何工作感到非常困惑。
当我尝试以下功能时,rdup([1,2], L).
我得到了false
. 我已经追踪了目标,看起来我不应该像我通过递归调用 rdup 来构建结果列表那样构建结果列表。我不确定我应该如何建立结果列表。这是功能:
rdup([],M).
rdup([X],[X]).
rdup([H1,H2|T], M) :- H1 \= H2, rdup(T, [M,H1,H2]).
rdup([H1,_|T], M) :- rdup(T, [M,H1]).
谁能告诉我我的推理哪里错了,或者应该如何在 Prolog 中递归地建立一个列表?