isと=
違いを理解していなくてはまった。Aとaを関連付けしたかった。でもこれはできない
| ?- A is a, B is A. A is a, B is A. uncaught exception: error(type_error(evaluable,a/0),(is)/2) | ?-
こういう、atomを関連付ける場合は=を利用する。
| ?- A = a, B = A. A = a, B = A. A = a B = a yes | ?-
計算させたいときはisを使う。
| ?- A = 1 + 1. A = 1 + 1. A = 1+1 yes | ?- A is 1 + 1. A is 1 + 1. A = 2 yes | ?-
まとめ
- isは計算を行う述語
- =はパターンマッチを行う述語