如何在Prolog中使用配对访问列表?
例如:List[(x1,x2),(x3,x4),(x5,x6)]
如何访问x1 ? (x1,x2)
是列表的头部?那么什么是x1?
答案 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显然也可以是变量,而不是硬连线。