2
我是新的Prolog,我在這一點上被卡住了。 如何獲得此排序列表的頭像?在序言中獲得排序列表的頭
mylist(List,First) :-
sort(List, Sorted),
mylist(Sorted,First).
mylist([H|_],H).
我是新的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.