我正在浏览一些 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 的文档,参数可以是任何 PROLOG TERM(因此,f(X) 很好),并且 nonvar 测试参数是否已实例化。
在 4 的情况下,它没有被实例化,所以它应该是 NO 而不是 YES (X=X)。如果我的理解不正确,或者它是 ECLiPSe 序言中的文档问题,请纠正我?我正在使用最新版本。
谢谢!