Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog 测试列表是否表示没有重复项的集合_Prolog - Fatal编程技术网

Prolog 测试列表是否表示没有重复项的集合

Prolog 测试列表是否表示没有重复项的集合,prolog,Prolog,内置谓词setof/3可用于创建无重复项的有序列表 我还可以使用它来测试列表是否表示没有重复项的集合吗?像这样 no_duplicates(L) :- setof(_,_,L). 你不能。您的参数没有得到充分的实例化 如果您使用的是SWI Prolog,那么可以使用谓词 在列表中模块 你不能完全按照你描述的方式使用它。但是,如果要求列表遍历成员列表,然后对照原始列表检查该列表,则可以使用setof来确定列表是否为集合。如果它们具有相同的长度,则所有元素都是唯一的 no_duplicates(L

内置谓词
setof/3
可用于创建无重复项的有序列表

我还可以使用它来测试列表是否表示没有重复项的集合吗?像这样

no_duplicates(L) :- setof(_,_,L).

你不能。您的参数没有得到充分的实例化

如果您使用的是SWI Prolog,那么可以使用谓词
列表中
模块

你不能完全按照你描述的方式使用它。但是,如果要求列表遍历成员列表,然后对照原始列表检查该列表,则可以使用setof来确定列表是否为集合。如果它们具有相同的长度,则所有元素都是唯一的

no_duplicates(L) :-
    setof(X, member(X, L), Set), 
    length(Set, Len), 
    length(L, Len).

是否有其他方法检查我是否未使用swi prolog?