iso-prolog相关内容

谓词“simple/1"是什么意思?在 Prolog (SWI-Prolog) 中

我在看书时遇到了问题.我看到一个程序使用谓词“简单"(我猜 simple/1 ).不知道这个谓词是什么意思,在控制台用 ?-help(simple) 找不到.但是当我在控制台中尝试一些查询时,它的工作方式类似于: 5 ?- 简单(p(x)).错误的.6 ?- 简单(mia).真的.7 ?- 简单(米娅).真的.8 ?- 简单(f(Mia)).错误的. 我想这是某种谓词来确定参数是术语(或变量) ..
发布时间:2022-01-12 10:55:42 其他开发

扩展至 CFG,它是什么?

考虑以下对上下文无关文法的扩展,它允许规则在左侧具有一个(或多个)终结符,位于非终结符的右侧.即形式的规则: A b ->... 右边可以是任何东西,比如上下文无关语法.特别是,不是要求,右侧的末尾将具有完全相同的终端符号.在这种情况下,此扩展将是上下文相关的.但终端不仅仅是一个上下文.有时,这个终端被称为“推回". 显然,这不再是 CFG(类型 2).它包括类型 1.但它是什么?真的已 ..

最好的 Prolog 编程实践和风格指南是什么?

好的,我知道这是一个非常笼统的问题,并且已经写了一些关于这个主题的论文,但我觉得这些出版物涵盖了非常基本的材料,我正在寻找更先进的东西来改进风格和效率.这就是我在纸上的内容: “研究报告 AI-1989-08 Efficient Prolog:实用指南",Michael A. Covington,1989 年 Timo Knuutila 的“高效 Prolog 编程",1992 年 “P ..
发布时间:2022-01-12 10:11:29 其他开发

Prolog - 列表的不寻常的 cons 语法

我在 Lee Naish 的论文中遇到了一些不熟悉的 Prolog 语法高阶逻辑在 Prolog 中编程.这是论文中的第一个代码示例: % 插入排序(简单版)排序([],[]).异类(A.As,Bs):-排序(As,Bs1),异类(A,Bs1,Bs).% 将数字插入排序列表插入(N,[],[N]).插入(N,H.L,N.H.L):-N =<H.插入(N,H.LO,H.L):-N>H,插入(N,L ..
发布时间:2022-01-12 10:08:11 其他开发

DCG 扩展:坚定不移被忽视了吗?

假设我有以下 DCG 规则: 因子(X) -->“(",expr(X),“)". 通常会被翻译成: 因子(X, A, B) :-[40|C] = A,expr(X, C, D),[41|B] = D. 是否允许 Prolog 系统将其翻译如下,即 将统一合并为头部和目标? 因子(X, [40|A], B) :-表达式(X,A,[41|B]). 如果 DCG 扩张不坚定,就不会被 ..
发布时间:2022-01-12 10:07:45 其他开发

Prolog 运算符“^"(“插入符号")是什么?

Prolog 运算符 ^ 是什么? 查看 Prolog 内置指令op 给出了内置运算符的列表. 我明白了 ** 是 求幂 /\ 是 或 但是 ^ 是什么? 当前三个答案中的每一个都很有价值,我学到了一些东西: 罗伊的书 示例为 false 我接受了 CapelliC 的回答,因为它明确了 ^/2 具有多种含义 取决于上下文,这立即消除了我的困惑. ..
发布时间:2022-01-12 10:07:28 其他开发

可在线搜索的 Prolog 语言描述

在线是否有关于 Prolog 语言(语法和语义)的描述? 有很多实现参考手册.但这些都不是语言描述.例如 SWI Prolog 手册 状态 本手册没有描述 Prolog 的完整语法和语义. 和 指 一套印刷在纸上的书籍,出版于十九世纪八十年代.对于 ISO 标准,这是为了钱,“应该从我国的 ISO 代表处获得"的胡言乱语. 解决方案 ISO标准以极低的价格提供(目前USD ..
发布时间:2022-01-12 10:07:00 其他开发

GNU Prolog 断言错误

我是 Prolog 的新手,但我被这个看似简单的命令所困.我已经加载一个没有错误的知识库,每当我尝试做 assert(甚至是 help)我收到以下消息: 未捕获的异常:error(existence_error(procedure,assert/1),top_level/0){2} 我到底错过了什么?赞赏. 解决方案 使用 assertz/1 或 asserta/1 代替.GNU-Pr ..
发布时间:2022-01-12 10:01:29 其他开发

如何在 ISO Prolog 中定义(和命名)相应的安全术语比较谓词?

标准术语顺序(ISO/IEC 13211-1 7.2 术语顺序)定义在所有术语上——包括变量.虽然这个有很好的用途——想想 setof/3 的实现,这使得 8.4 术语比较中内置函数的许多其他干净和合乎逻辑的使用变成了与 imps(命令式构造的缩写形式)的声明性噩梦.8.4 词条比较特征: 8.4 词条比较 8.4.1 (@=8.4.2 compare/3. 8.4.3 sort/2 ..
发布时间:2022-01-12 09:58:16 其他开发

'和'有什么区别?在序言中?

我是 Prolog 的新手,注意到 ' 和 " 给出不同的行为,但很好奇为什么.具体来说,在加载文件时,?- ['test1.pl']. 有效, 而 ?- ["test1.pl"]. 没有. 解决方案 单引号的项目总是原子. 双引号的含义取决于Prolog标志double_quotes: 原子 —使用此值 “a";= 一个.如今,这很少使用.但是你会发现写有 ["abc.pl" ..
发布时间:2022-01-12 09:52:39 其他开发

Javascript 中的 Prolog 系统

Javascript 作为其他编程语言的实现语言似乎变得流行起来.文章(C)LP 到 JavaScript 的轻量级编译.ICLP 2012引起了我的注意. 网上有很多用 Javascript 编写的 Prolog 系统的概念验证原型. 什么是当前的、积极维护的、最好是用 Javascript 编写的符合 ISO 的 Prolog 系统? 解决方案 我所知道的 JavaScri ..
发布时间:2022-01-04 21:30:35 前端开发

谓词“simple/1"是什么意思?在序言(SWI-序言)

我在看书时遇到了问题.我看到一个程序使用谓词“简单"(我猜是 simple/1 ).我不知道这个谓词是什么意思,我在控制台中用 ?-help(simple) 找不到它.但是当我尝试在控制台中进行一些查询时,它的工作方式如下: 5 ?- 简单(p(x)).错误的.6 ?- 简单(mia).真的.7 ?- 简单(米娅).真的.8 ?- 简单(f(Mia)).错误的. 我想这是确定参数是术语(或变量 ..
发布时间:2021-06-22 19:11:27 其他开发

在 Prolog 中定义谓词的最佳方法

我在 Prolog 中定义过程时遇到问题.我有两个源文件,想用它们咨询 Prolog 引擎.这可以通过调用 Prolog 作为 swipl -g “['1.pl','2.pl'] 来完成. 这两个文件都是由用另一种编程语言编写的另一个程序生成的,我无法事先预测文件的确切内容. 问题是在其中一个文件中总是有一个规则 predicate1(X):-predicate2(X). 但是,有 ..
发布时间:2021-06-22 19:01:50 其他开发

列出给定库模块中的谓词

有没有办法列出在 SICStus Prolog 的给定库模块中定义的所有谓词? 例如如果我加载列表模块: |?- use_module(library(lists)). 是否可以从提示中运行另一个谓词来告诉我刚刚导入了哪些谓词? 解决方案 这适用于 SWI-Prolog,但谓词 current_predicate/1 被标记为“ISO",所以至少在 SISTUS 中尝试一下.这是 ..
发布时间:2021-06-22 19:00:58 其他开发

Prolog 是否有条件并像 Common Lisp 那样重启系统?

Common Lisp 允许通过条件和重启进行异常处理.粗略地说,当一个函数抛出异常时,“捕获者"可以决定“抛出者"应该如何/是否继续进行.Prolog 是否提供类似的系统?如果不是,是否可以在现有谓词之上构建一个来遍历和检查调用堆栈? 解决方案 Prolog 的 ISO/IEC 标准只提供了一个非常基本的异常和错误处理机制,它或多或少地与 Java 提供的相当,与 Common Lisp ..
发布时间:2021-06-22 18:56:28 其他开发

析取运算符的等价性和具有若干规则的定义

我刚刚在 SWI Prolog 手册 其中指出: `or' 谓词定义为:目标1;_Goal2 :- 目标 1._目标1;目标 2:- 目标 2. 这是否意味着 ;/2 的行为就像我们编写自己的由两个规则组成的辅助谓词一样?我记得 ;/2 是一个不纯的结构(但我有可能将它与 if-then-else 混在一起),但这个定义是纯的(虽然是元逻辑的). ;/2 的语义在 ISO 标准的第 7. ..
发布时间:2021-06-22 18:56:19 其他开发

Prolog:子句在源文件中不在一起

我有这段代码: % 家谱女(笔).男(汤姆).男(鲍勃).女(丽兹).女(拍拍).女(安).男(吉姆).父母(帕姆,鲍勃).父母(汤姆,鲍勃).父母(汤姆,莉兹).父母(鲍勃,安).父母(鲍勃,帕特).父母(帕特,吉姆). 我收到此错误: 警告:female/1 的子句在源文件中不在一起警告:male/1 的子句不在源文件中 这个错误的目的是什么? 我的意思是,文件确实编译并运行得很好, ..
发布时间:2021-06-22 18:50:44 其他开发

如何将整数创建为字符代码常量?

我正在为 integer/1 使用 SWI-Prolog. ISO/IEC 13211-1 给出了 integer 的 BNF 定义,整数的替代方法之一是 字符代码常量. 我能够使用 integer/1 创建和测试所有其他替代方案的示例,但是对于 character code constant 我无法创建有效示例.(见下文) 如何使用 整数/1? 回答 感谢@fals ..
发布时间:2021-06-22 18:47:42 其他开发

变量列表中的变量出现

考虑一个(元逻辑)谓词 var_in_vars(Var, Vars),它接受一个变量 Var 和一个变量列表 Vars 和如果 Var 出现在 Vars 中,则成功.所以我们不需要保证 Var 是一个变量,也不需要保证 Vars 是一个变量列表. 在 ISO Prolog 中表达这一点的最紧凑和最规范的方式是什么?这是 ISO/IEC 13211-1 中的内置程序概述:1995 包括 Cor ..
发布时间:2021-06-22 18:46:31 其他开发