我对 prolog 还很陌生,目前正在阅读一本书,该书为我提供了代码练习示例。它要求我删除重复项。
注意:我已阅读其他 stackoverflows,并且我了解如何删除重复项,但我不明白为什么我的代码无法正常工作。(我为其他 stackoverflows 选择了不同的方法)
我创建了一个 is_member 谓词,我认为它可以正常工作。
is_member(X, [Head,Tail]):-
X == Head;
is_member(X, Tail).
然后我的 remove_duplicates 谓词
remove_duplicates([Head|Tail], Without):-
is_member(Head, Tail),
remove_duplicates(Tail, Without);
remove_duplicates(Tail, Head).
在我看来这是有道理的,它检查 Head 是否是 tail 的成员,如果是,它不会将其添加到 Without 列表中,
否则它会。
我显然在这里遗漏了一些微不足道的东西,
提前致谢