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

时间:2017-07-25 03:15:17

标签: list sorting prolog head

我是新Prolog而且我已经陷入困境。 如何获得此排序列表的负责人?

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

1 个答案:

答案 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.