[A,B,C|_] = [1,2,3,4,5,6,7]
A = 1
B = 2
C = 3.
我预料到了这个结果。然而,当我有:
L = [A,B,C,D]
如何操作:
L = [1,2,3,4,5,6,7]
A = 1
B = 2
C = 3
D = 4
问题是我不知道L
有多长。我只知道:L
比右侧列表短,而L
只包含变量。
我们只是在变量列表的尾部append(Vars, _, ExtendedList)
"插入自由变量",然后是模式匹配ExtendedList = Data
。合同,我们得到:
match_vars(Vars, Data):-
append(Vars, _, Data).
测试:
2 ?- match_vars([A,B],[1,2,3,4,5]).
A = 1,
B = 2.
3 ?- match_vars([A,B,C,D],[1,2,3,4,5]).
A = 1,
B = 2,
C = 3,
D = 4.
4 ?-
(评论中已经提到使用append/3
)