【发布时间】:2016-04-18 18:04:37
【问题描述】:
我有一个谓词可以统一它的参数,例如:
foo(X) :- X = 42.
在证明foo(X) 时,我如何判断统一是否改变了 X?例如,我想知道writeln(X), foo(X), writeln(X) 是否会为 X 打印两次相同的值,而无需实际进行打印。
我对@987654324@ 的实际实现实际上要复杂得多,所以请不要针对上面的简化版本提出具体建议。在我的程序中,foo(X) 使用统一化简化了X,但foo(X) 可能需要多次证明,直到所有简化都执行完毕。我希望能够编写一个调用foo(X) 的foohelper(X) 谓词,直到X 停止统一。
【问题讨论】:
-
什么时候你想知道
X是否已经被实例化了? (我们不改变X,我们实例化它) -
我想知道
X是否在证明foo(X)时被实例化,在我的示例中位于第二个writeln(X)的位置。
标签: prolog unification