2017-07-25 81 views

回答

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.