为什么Prolog使用最一般的统一器而不是只使用统一器呢?
如果我没错的话,我认为这是因为Prolog基于回溯,如果我们不使用最一般的统一器,就会错过变量统一的某些组合。
为什么Prolog使用最一般的统一器而不是只使用统一器呢?
如果我没错的话,我认为这是因为Prolog基于回溯,如果我们不使用最一般的统一器,就会错过变量统一的某些组合。
最一般的统一和普通的统一之间的区别表现在结果术语仍包含变量时。考虑到最一般的统一问题:
?- X = Y.
X = a, Y = a.
但同时也
X = 23, Y = 23.
等等。
因此,有许多这样可能的结果。然而,我们想要得到所有结果。这就是最一般的统一器所做的:
X = Y.
或者
Y = X.
虽然仍有两个变量,但如果上下文需要,可以忽略这种歧义,添加“重命名(变量)”来解决。