内置谓词setof/3
可用于创建没有重复的有序列表。
我还可以用它来测试列表是否代表没有重复的集合吗?喜欢这个?
no_duplicates(L) :- setof(_,_,L).
答案 0 :(得分:2)
您不能完全按照您描述的方式使用它。但是,如果您要求列表遍历成员列表,则可以使用setof来确定列表是否为集合,然后根据原始集检查集合。如果它们具有相同的长度,则所有元素都是唯一的。
no_duplicates(L) :-
setof(X, member(X, L), Set),
length(Set, Len),
length(L, Len).
答案 1 :(得分:0)
你做不到。你的论点没有充分实例化。
如果您使用的是SWI-Prolog,则可以使用谓词
lists
模块中的is_set/1
。