【发布时间】:2013-06-01 22:45:24
【问题描述】:
我正在尝试编写一个谓词来从 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 中递归地建立一个列表?
【问题讨论】: