我想编写一个谓词different_from(Xs,X),这是一个检查,当且仅当X与列表X的所有元素不同时才成功。
所以查询
different_from([3,2,5],4)
应该会成功,但以下查询应该失败:
different_from([3,2,5],2)
由于谓词是一个检查,它不应该实例化它的任何一个参数。
提前感谢您提供任何帮助。
答案 0 :(得分:2)
这是一个非常简单的规则,由两个子句组成:
different_from
成功,different_from
成功,并且尾部的different_from
也成功。这是用Prolog语法编写的相同内容:
different_from([], _).
different_from([H|T], E) :- E \= H, different_from(T, E).