Prolog - 我应该如何访问配对列表?

时间:2014-04-09 13:44:16

标签: prolog

如何在Prolog中使用配对访问列表?

例如:List[(x1,x2),(x3,x4),(x5,x6)]

如何访问x1 ? (x1,x2)是列表的头部?那么什么是x1?

3 个答案:

答案 0 :(得分:3)

统一。只需为他们提供“变量”,他们就会匹配。

例如,如果您有要打印的对列表:

print_all_pairs([]).
print_all_pairs([(X, Y)|T]) :-
    write('Property '), write(X), write(' has a value of '), write(Y), nl,
    print_all_pairs(T).

答案 1 :(得分:3)

Prolog使用模式匹配。您可以使用匿名变量来统一您不需要的部分。

first([(X,_)|_], X).

?- first([(a,1),(b,2)], X).
X = a.

答案 2 :(得分:0)

要访问任何列表项 - 而不仅仅是第一个列表项,您只需使用member / 2或memberchk / 2:

?- List=[(x1,x2),(x3,x4),(x5,x6)], member((x3, XN), List).
List = [ (x1, x2), (x3, x4), (x5, x6)],
XN = x4 .

在member / 2子句中,x3显然也可以是变量,而不是硬连线。