根据维基百科:
为所有统一提供声音统一的实现是 Qu-Prolog 和 Strawberry Prolog 以及(可选地,通过运行时标志):XSB、SWI-Prolog和 Tau Prolog。
但是,当我这样做时,apropos(occur)
它只会找到unify_with_occurs_check/2
. 手册页也没有提到“发生” 。如何为 SWI-Prolog 中的所有统一启用发生检查?
根据维基百科:
为所有统一提供声音统一的实现是 Qu-Prolog 和 Strawberry Prolog 以及(可选地,通过运行时标志):XSB、SWI-Prolog和 Tau Prolog。
但是,当我这样做时,apropos(occur)
它只会找到unify_with_occurs_check/2
. 手册页也没有提到“发生” 。如何为 SWI-Prolog 中的所有统一启用发生检查?
在Environment Control部分,它列出了系统的标志。该occurs_check
标志是控制发生统一检查的标志。
您可以使用以下方式设置标志:
:- set_prolog_flag(occurs_check, true).
例如:
?- X = f(X).
X = f(X).
?- set_prolog_flag(occurs_check, true).
true.
?- X = f(X).
false.
所以首先它X
与f(X)
. 如果我们稍后将 设置occurs_check
为,那么如果我们再次true
尝试与 统一,则会失败。X
f(X)