Prolog使用最通用的统一者而不仅仅是统一者,为什么会这样?
如果我没有错,那么我认为,因为Prolog是基于回溯的,如果我们不使用大多数通用的统一者,那么我们会错过变量统一的某些组合吗?
答案 0 :(得分:7)
最常用的统一者与统一者之间的差异显示结果术语何时仍包含变量。考虑大多数一般统一问题:
?- X = Y.
具体的统一者将是:
X = a, Y = a.
但也
X = 23, Y = 23.
等等。
所以有很多这样的可能结果。但是,我们想要所有这些。这是最通用的统一者所做的事情:
X = Y.
或
Y = X.
仍然有两个,但这种歧义被忽略添加"直到重命名(变量)"如果背景需要它。