统一Prolog项

统一Prolog项,prolog,term,Prolog,Term,[a,b,c,d,e]和[[X]|[b,c,d,e]]这两个术语是统一的吗?我需要确认,我想这不是因为你不能以任何方式得到[X]=a 我认为你需要用[b,c,d,e]来统一,而不是[b,c,d,e],也就是说,你可以得到X=a,而不是[X]=a你的假设是正确的:[X],我们可以重写为(X,[])不能用原子来统一 我们可以将[X |[b,c,d,e]]重写为(_G231,.(b,。(c,。(d,。(e,[])),即[X,a,b,c,d,e] 您可以使用display/1查看形状,而不使用语法sug

[a,b,c,d,e]和[[X]|[b,c,d,e]]这两个术语是统一的吗?我需要确认,我想这不是因为你不能以任何方式得到[X]=a

我认为你需要用
[b,c,d,e]
来统一,而不是
[b,c,d,e]
,也就是说,你可以得到
X=a
,而不是
[X]=a

你的假设是正确的:
[X]
,我们可以重写为
(X,[])
不能用原子
来统一

我们可以将
[X |[b,c,d,e]]
重写为
(_G231,.(b,。(c,。(d,。(e,[]))
,即
[X,a,b,c,d,e]


您可以使用display/1查看形状,而不使用语法sugar。

如果出于某种原因需要将X包含在列表中,您将无法实现此统一(如chac所述)。但您可以使用append谓词来获取匹配项:

?- append([X], [b,c,d,e], [a,b,c,d,e]).
X = a