是 [a,b,c,d,e] 和 [[X] 这两个项吗?[b,c,d,e]] 统一?我需要确认我认为它们不是因为您无法以任何方式获得 [X] = a 吗?
问问题
625 次
3 回答
3
您的假设是正确的:[X]
,我们可以重写为.(X,[])
不能与 atom 统一a
。
我们可以重写[X|[b,c,d,e]]
为.(_G231,.(b,.(c,.(d,.(e,[])))))
,即[X,a,b,c,d,e]
。
您可以使用 display/1 检查没有语法糖的形状。
于 2012-01-24T10:04:10.727 回答
2
我认为你需要统一与[X | [b,c,d,e]]
,不是[[X] | [b,c,d,e]]
,即你可以得到X=a
,而不是[X]=a
。
于 2012-01-24T09:35:21.763 回答
1
如果出于某种原因需要将 X 包含在列表中,您将无法统一(如 chac 所述)。但您可以使用附加谓词来获得匹配:
?- append([X], [b,c,d,e], [a,b,c,d,e]).
X = a
于 2012-01-24T13:42:25.780 回答