私はいくつかの ECLiPSe ドキュメントを調べていて、これを見つけました:
`nonvar/1` : Fails if Term is not instantiated
私はこれをやってみました:
1. Query: nonvar(X). Result: No (AS EXPECTED)
2. Query: X=5, nonvar(X). Result: Yes (AS EXPECTED)
3. Query: X=5, nonvar(f(X)). Result: Yes, X=5. (AS EXPECTED)
今、このクエリの結果は私を混乱させました:
4. Query: nonvar(f(X)). Result: Yes, X=X.
クエリ 1、2、3 は期待どおりに機能します。私にとって、4の結果は奇妙です。Eclipse の nonvar/1 のドキュメントによると、引数は ANY PROLOG TERM (つまり、f(X) は問題ありません) であり、nonvar は引数が INSTANTIATED かどうかをテストします。
4 の場合、インスタンス化されていないため、YES (X=X) ではなく NO である必要があります。私の理解が間違っている場合は訂正してください。それとも ECLiPSe プロローグのドキュメントの問題ですか? 最新バージョンを使用しています。
ありがとう!