【发布时间】:2021-01-25 19:24:56
【问题描述】:
我是一个尝试编写谓词的菜鸟,但我有点卡住了。早些时候,我创建了一个名为remDuplicates/2 的谓词,如果谓词的第二个列表是删除了所有重复项的第一个列表,则该谓词将声明为真。请参阅下面的代码了解我正在使用的谓词。
remDuplicates([], []).
remDuplicates([H|T], [H|T1]) :- subtract(T,[H],T2), remDuplicates(T2, T1).
但是,现在我正在尝试创建一个新谓词,它使用remDuplicates 从一个名为remT/1 的列表中删除重复项。 remT/1 采用单个参数,应使用 remDuplicates 谓词删除所有重复项,然后返回新列表(没有任何重复项)。
我已经尝试过它应该如何开始,但实际上,我不知道从哪里开始。请在下面查看我的尝试开始;
remT([]).
remT([H|T]) :- remDuplicates([H|T],[H|T]).
非常感谢您对此的帮助。谢谢。
【问题讨论】:
-
Prolog中通常没有“返回”这样的东西,也没有可变变量。为什么需要这样的谓词?
标签: prolog return-value