统一的Prolog术语

时间:2012-01-24 09:23:06

标签: prolog term

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

3 个答案:

答案 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