两个术语是[a,b,c,d,e]和[[X] | [b,c,d,e]]是否统一?我需要确认我认为他们不是因为你不能以任何方式得到[X] = a?
答案 0 :(得分:3)
您的假设是正确的:[X]
,我们可以重写为.(X,[])
,无法与原子a
统一。
我们可以将[X|[b,c,d,e]]
重写为.(_G231,.(b,.(c,.(d,.(e,[])))))
,即[X,a,b,c,d,e]
。
您可以使用display / 1检查没有语法糖的形状。
答案 1 :(得分:2)
我认为您需要与[X | [b,c,d,e]]
统一,而不是[[X] | [b,c,d,e]]
,即您可以获得X=a
,而不是[X]=a
。
答案 2 :(得分:1)
如果出于某种原因需要将X括在列表中,则无法将其统一(如chac所述)。但你可以使用append谓词来获得匹配:
?- append([X], [b,c,d,e], [a,b,c,d,e]).
X = a