Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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
List 序言:按字母顺序排列列表_List_Sorting_Prolog_Prolog Setof - Fatal编程技术网

List 序言:按字母顺序排列列表

List 序言:按字母顺序排列列表,list,sorting,prolog,prolog-setof,List,Sorting,Prolog,Prolog Setof,我有以下问题,我应该按照字母顺序排列一个只包含字符串的列表,只使用'bagof','findall','setoff',我不支持使用任何排序算法 下面是我必须列出的.pl文档的内容 musico('R. Stevie Moore'). musico('Lane Steinberg'). musico('Yukio Yung'). musico('Jessie Evans'). musico('Miguel'). musico('Lucia Pamela'). musico('Shooby Tay

我有以下问题,我应该按照字母顺序排列一个只包含字符串的列表,只使用'bagof','findall','setoff',我不支持使用任何排序算法

下面是我必须列出的.pl文档的内容

musico('R. Stevie Moore').
musico('Lane Steinberg').
musico('Yukio Yung').
musico('Jessie Evans').
musico('Miguel').
musico('Lucia Pamela').
musico('Shooby Taylor').
musico('Tiny Tim').
musico('The Legendary Stardust Cowboy').
以下是我到目前为止的情况:

all_musicians([Z]) :-
    findall(X, musico(X), Z).

这使得列表包含所有音乐家,但现在我似乎不知道如何排序。

setof/3
是您想要的,因为它会生成一个排序结果列表

all_musicians(Z) :- 
    setof(X, musico(X), Z).

setof可以用于对只包含一种变量的所有类型的列表进行排序吗?如果列表包含多种类型的变量怎么办?@eXistanCe只需阅读文档,特别是
sort/2
排序以及“术语的标准顺序”的含义。@eXistanCe是的,
setof/3
sort/2
可以对所有类型的列表元素进行排序。您应该阅读解释规则的文档。请记住,
setof
bagof
+
排序
。但是为什么您没有阅读
setof
bagof
的文档呢?