[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
只包含变量。
答案 0 :(得分:0)
我们只是在变量列表的尾部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
提及in the comments)。