我有對的列表:[{1,},{2,B},{3,C},{4,d}]Prolog的:從對的列表中提取的單個列表
我怎樣才能提取每一對的第二個元素,並創建一個單獨的列表?
所以:[A,B,C,d]
對不起,我是新來的Prolog,和周圍一看答案,但無法找到它。
我有對的列表:[{1,},{2,B},{3,C},{4,d}]Prolog的:從對的列表中提取的單個列表
我怎樣才能提取每一對的第二個元素,並創建一個單獨的列表?
所以:[A,B,C,d]
對不起,我是新來的Prolog,和周圍一看答案,但無法找到它。
你所顯示的不是一個成對的列表。這就是:
[1-a, 2-b, 3-c, 4-d].
有了這個列表,你可以這樣做:
?- pairs_values([1-a, 2-b, 3-c, 4-d], V).
V = [a, b, c, d].
?- pairs_keys([1-a, 2-b, 3-c, 4-d], K).
K = [1, 2, 3, 4].
而且,做了謂詞是明確的:
seconds([], []).
seconds([_A-B|Pairs], [B|Secs]) :-
seconds(Pairs, Secs).
如果你堅持,當然,:
secs([], []).
secs([{_A, B}|Pairs], [B|Secs]) :-
secs(Pairs, Secs).
但是你可以自己決定w帽子效果最好,只要記住:
?- write_canonical({1,a}).
{}(','(1,a))
true.
?- write_canonical(1-a).
-(1,a)
true.
好材料上序言,其中包括:
隨着SWI-Prolog的唯一,你可以做
:- use_module(library(lambda)).
extract_second(In, Out) :-
maplist(\X^Y^(X = {_,Y}), In, Out).
你可以得到庫(拉姆達)有:http://www.swi-prolog.org/download/pack/lambda-1.0.0.tgz
給定[此處](http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/ISO-Hiord#implementation)的定義適用於任何符合Prolog的系統 - 包括SICStus! – false
對不起,這是一個錯誤。你說得對,[1-a,2-b,3-c,4-d]就是我想要的。順便說一句,謝謝你的參考。 – Hydar77