17得票6回答
变量在变量列表中的出现次数

考虑一个元逻辑谓词var_in_vars(Var,Vars),它接受变量Var和变量列表Vars,如果Var出现在Vars中,则成功。因此我们不需要确保Var是一个变量,也不需要确保Vars是一个变量列表。 在ISO Prolog中,最紧凑且标准的表达方式是什么?这里提供了ISO/IEC 1...

17得票2回答
两个变量集的并集

给定两个变量列表,ISO Prolog 中最简洁和规范的方法是什么,以确定两者的并集?也就是说,我们想要一个(元逻辑)谓词的定义。 varset_union(VarSet1, VarSet2, Union) 和列表列表 varset_union(VarSets, Union) 其中...

16得票3回答
sort/2,keysort/2与samsort/3,predsort/3的区别是什么?

ISO-Prolog提供了sort/2和keysort/2,它们依赖于项序(7.2),通常称为“标准项序”。 使用不同序列的常见方法是将该列表的每个元素El映射到一些对XKey-El的列表上,然后对该列表进行排序,最后投影键。例如,考虑如何用sort/2(请参阅实现说明)表示keysort/...

14得票2回答
为什么高优先级操作符的原子不需要使用圆括号?

在早期的教科书1中,经常会遇到以下形式的运算符声明:?- op(1200,fx,(:-)). ^ ^ 这些圆括号以前是必需的,但今天它们不再需要:| ?- writeq(op(1200,fx,(:-))). op(1200,fx,:-) 它们为什么不再需...

14得票3回答
Prolog谓词参数中实例化模式指示符的含义

查看Prolog文档时,有时会以以下方式编写谓词签名:foo(:Bar, +Baz, -Qux, ?Mop) :, +, -和?这些符号是什么意思,我该如何解释它们?此外,它们是唯一存在的符号吗,还是还有其他的符号存在?

13得票1回答
测试该术语是否为不同变量的列表。

在ISO Prolog中,最紧凑和规范的测试一组不同变量的方式是什么?我们称这个元逻辑谓词为is_varset/1。 如果参数是一个所有变量都不同的变量列表,它应该成功。请注意,列表总是以一个[]结尾。如果一个变量在结尾,则称其为部分列表(因此不是列表)。如果一个非变量项作为后缀出现,既不是...

13得票1回答
什么是最佳的Prolog编程实践和风格指南?

好的,我知道这是一个非常普遍的问题,并且已经有一些关于此主题的论文,但我感觉这些出版物涵盖的只是基础材料,我正在寻找更高级的东西,可以提高风格和效率。这就是我在论文中的内容: 《Research Report AI-1989-08 Efficient Prolog: A Practical...

12得票4回答
Prolog运算符`^`(“脱字符”)是什么?

Prolog运算符^是什么? 查看Prolog内置指令op可以得到内置运算符列表。 我看到: **是指数运算 /\是或运算 但是^是什么? 这三个答案都有价值,我也学到了一些东西: Roy关于书的回答 false关于例子的回答 我接受了CapelliC的答案,因为它清晰地表明...

11得票3回答
规范形式下节省空间的字符读取

使用字符(字符列表,因此为长度为1的原子)来表示文本时,我们有以下选项可以在术语中编写它们: 双引号列表表示法(6.3.7)是最有效的一种,至少需要n+2个字符。但只有在Prolog标志double_quotes设置为chars时才能读回。 ['N',e,x,t,',']是带有至少2n+...

11得票1回答
标准中使用了哪些“type”含义?

在 Prolog 的 ISO 标准的第一部分 ISO/IEC 13211-1:1995 中,"type" 这个概念被用来指代不同的事物。这经常导致混淆。例如,一个名为 IsoErrata(archived version,source)的页面说明(请注意,此页面与 ISO 无关)。 7.12...