在Prolog中获取排序列表的头部



我是新的Prolog,我被困在这一点上。 如何获取此排序列表的负责人?

mylist(List,First) :-
sort(List, Sorted),
mylist(Sorted,First).
mylist([H|_],H).

使用[First|_]统一排序列表

mylist(List,First) :-
sort(List,[First|_]).

所以现在Prolog将统一sort/2的正确操作数与[First|_]。这意味着如果你用mylist([1,4,2,5],F)打电话,Prolog会打电话给sort([1,4,2,5],[F|_])。现在Prolog将对列表进行排序以[1,2,4,5]并统一[1,2,4,5] = [F|_]。自[1,2,4,5] = [1|[2,4,5]]年以来取得了成功.所以F = 1和通配符是[2,4,5].

请注意,仅当sort/1的第二个参数是至少包含一个元素的列表时,谓词才会成功。

您还可以使用该First进行进一步处理。如果你需要对排序列表的引用及其头,你可以使用:

mylist(List,First) :-
sort(List,Sorted),
Sorted = [First|_],
%% further processing with Sorted and First.

最新更新