我是新Prolog而且我已经陷入困境。 如何获得此排序列表的负责人?
mylist(List,First) :-
sort(List, Sorted),
mylist(Sorted,First).
mylist([H|_],H).
答案 0 :(得分:1)
您使用[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.