4

一方面:

$ sicstus
SICStus 4.6.0 (x86_64-linux-glibc2.17):2020 年 4 月 6 日星期一 09:23:37 PDT
[...]

| ?- \+ (!,false) ; X = 1。
是的

... 另一方面 ...

$ gprolog
GNU Prolog 1.4.5(64 位)
[...]

| ?- \+ (!,false) ; X = 1。
真的 ?;
X = 1
是的

...另一方面:

$ swpl
欢迎使用 SWI-Prolog(线程化,64 位,8.2.2 版)
[...]

1 ?- \+ (!,false) ; X = 1。
真;
X = 1。

令人困惑,不是吗?请帮忙!

4

1 回答 1

6

只是 SICStus Prolog 顶层的一个工件。试试例如

$ sicstus
SICStus 4.6.0 (x86_64-darwin-17.7.0): Mon Apr  6 18:23:42 CEST 2020
...
| ?- X = 0, \+ (!,false) ; X = 1.
X = 0 ? ;
X = 1 ? ;
no

根据\+/1标准的要求,控制结构对 SICStus Prolog 中的剪切是不透明的。

于 2020-11-07T22:53:17.067 回答