2
3 == X.

会导致答案“不”,但是

3 =:= X

会导致错误:

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

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

4

1 回答 1

4

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

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

于 2017-03-04T12:02:43.577 回答