为什么=:=在未实例化变量时给出错误,但==没有?

时间:2017-03-04 11:43:02

标签: prolog instantiation-error

3 == X.

会导致答案'不',但

3 =:= X

会导致错误:

! Instantiation error in argument 2 of (=:=)/2
! goal:  3=:=_409

为什么会这样?当一个是未实例化的变量时,它们是否应该表现相同?

1 个答案:

答案 0 :(得分:4)

=:=/2评估表达式并比较结果 - 因此它不能包含任何未完全实例化的术语。

换句话说,X =:= Y类似于EX is X, EY is Y, EX = EY - 但它也会进行隐式转换,例如1 =:= 1.0评估为真。