prolog - SWI序言中的否定优先级
问题描述
这是来自 Blackburn 和 Bos 的书“自然语言的表示和推理”的引述。
:- op(900,yfx,>). % implication
:- op(850,yfx,v). % disjunction
:- op(800,yfx,&). % conjunction
:- op(750, fy,-). % negation
正如预期的那样,否定比合取具有更高的优先级。
现在查看 SWI Prolog文档
\+
- 否定作为失败的优先级低于 (900) 低于/\
连接 (500)。
我读对了吗?
SWI Prolog中是否还有另一个否定符号?我知道有not
,但它只是为了向后兼容而保留的。
加法在 SWI Prolog 中是否~
有意义?
解决方案
注意,(\+)/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)使用。
推荐阅读
- javascript - 将文件从 s3 下载到本地磁盘
- sql - 返回分组中的计数 0
- r - R - 根据 ID 和日期变量创建新列
- c# - 有条件地添加 IAsyncDisposable?
- android - 通过 startActivityForResult 传递的 Drawable 未打印到 PDF 页面
- flutter - Flutter 嵌套 UI
- python - 用逗号替换空格和新行
- css - 使用媒体查询更改显示属性不起作用
- amazon-web-services - 附加了 ALB 的 EC2 实例在端口 3000 上显示不正常状态
- python - Cloud Foundry 中 200 个并发访问后 Flask 服务关闭