2

是 [a,b,c,d,e] 和 [[X] 这两个项吗?[b,c,d,e]] 统一?我需要确认我认为它们不是因为您无法以任何方式获得 [X] = a 吗?

4

3 回答 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 回答