4

根据维基百科

为所有统一提供声音统一的实现是 Qu-Prolog 和 Strawberry Prolog 以及(可选地,通过运行时标志):XSB、SWI-Prolog和 Tau Prolog。

但是,当我这样做时,apropos(occur)它只会找到unify_with_occurs_check/2. 手册页也没有提到“发生” 。如何为 SWI-Prolog 中的所有统一启用发生检查?

4

1 回答 1

4

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.

所以首先它Xf(X). 如果我们稍后将 设置occurs_check为,那么如果我们再次true尝试与 统一,则会失败。Xf(X)

于 2020-11-14T21:18:11.110 回答