【发布时间】:2020-09-29 14:53:49
【问题描述】:
是否存在带有发生检查的差异? 这在这里有效:
Welcome to SWI-Prolog (threaded, 64 bits, version 8.3.7)
?- set_prolog_flag(occurs_check, true).
true.
?- dif(X,f(Y)), X = Y.
X = Y.
但上述不可行,因为发生检查 是一个全局标志,我得到以下信息:
SWI-Prolog console for thread 3
?- X=f(X).
false.
【问题讨论】:
-
Here 是一个实现的草图。
-
这不应该被认为是 SWI 中的一个错误吗?
-
我的意思是
(=)/2相当于unify_with_occurs_check/2,而OC是true。
标签: prolog prolog-dif occurs-check