这里引用了布莱克本和博斯的著作《自然语言的表示与推理》。
:- op(900,yfx,>). % implication
:- op(850,yfx,v). % disjunction
:- op(800,yfx,&). % conjunction
:- op(750, fy,-). % negation
如预期的否定比连词具有更高的优先级。
现在查看SWI Prolog docs
\+
-否定,因为失败的优先级(900)比/\
连词(500)低。
我阅读正确吗?
SWI Prolog中还有否定符号吗?我知道有not
,但仅保留它是为了向后兼容。
添加 ~
在SWI Prolog中是否有意义?
答案 0 :(得分:3)
请注意,(\ +)/ 1是逻辑谓词(ISO核心标准7.8控制构造,8.15逻辑和控制),但是(/ \)/ 2是按位运算(ISO核心标准8.6算术评估,按位9.4) (is)/ 2内部使用的函子)。该列表为:
Logical Predicate Bitwise Operation Name
(,)/2 (/\)/2 Conjunction
(;)/2 (\/)/2 Disjunction
(\+)/2 (\)/1 Negation
Etc.. Etc.. Etc..
示例:
?- X is \ 1. /* Bitwise Negation */
X = -2.
?- 1 < 2, 1 > 0. /* Logical Conjunction */
true.
但是,由于(\ +)/ 1的语义与经典否定词略有不同,因此我们通常将其称为失败。 (〜)/ 1由CLP(B)使用。