检查列表中的重复-Prolog

检查列表中的重复-Prolog,prolog,Prolog,我试着写hasRepeation,它“接收”一个列表,当且仅当列表中有重复项时才返回true 我写道:hasRepeation([头|尾]):-成员(头,尾);(尾巴) 7?-HasRepeation([1,1])。 错误:顶级:未定义的过程:hasRepeation/1(DWIM无法纠正目标)您的过程定义很好 我猜您忘了查阅代码,即consult(name)。其中name是包含代码的文件的名称。您的过程定义很好 我猜你忘了查阅你的代码,即consult(name)。其中name是包含你的代码的

我试着写hasRepeation,它“接收”一个列表,当且仅当列表中有重复项时才返回true

我写道:hasRepeation([头|尾]):-成员(头,尾);(尾巴)

7?-HasRepeation([1,1])。
错误:顶级:未定义的过程:hasRepeation/1(DWIM无法纠正目标)

您的过程定义很好


我猜您忘了查阅代码,即
consult(name)。
其中name是包含代码的文件的名称。

您的过程定义很好


我猜你忘了查阅你的代码,即
consult(name)。
其中name是包含你的代码的文件名。

我想@gusbro已经给了你答案(+1)。但请注意,您编写的程序“效率非常低”


首先,应该使用memberchk/2而不是member。然后,在分离点前划一个切口。否则,如果在回溯时调用代码(例如,在findall内…)

我认为@gusbro已经给了您答案(+1)。但请注意,您编写的程序“效率非常低”

首先,应该使用memberchk/2而不是member。然后,在分离点前划一个切口。否则,如果在回溯时调用(例如,在findall中…),您的代码将非常慢