7得票3回答
这个Prolog术语使用正确吗?(事实,规则,过程,谓词,...)

术语的正确使用是传达概念成功的一部分,当在SO上使用Prolog标签时使用错误的术语时,答复者会很好地指出错误。 阅读William F. Clocksin在1997年撰写的《Clause and Effect-Prolog Programming for the Working Progr...

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

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

38得票5回答
统一化与STO检测

在ISO Prolog中,一致性仅针对那些不受出现检查限制的情况(NSTO)进行定义。其背后的思想是覆盖程序中大多数使用的一致性情况,并且所有Prolog系统都实际支持这些情况。更具体地,ISO/IEC 13211-1:1995如下所述: 7.3.3 受出现检查(STO)和不受出现检查(NS...

7得票1回答
ISO Prolog谓词的复杂性

标准 Prolog 谓词的时间复杂度上限有保证吗? 例如:在任何符合标准的 Prolog 系统中,sort(+List, ?SortedList) 是否一定以 O(nlog(n)) 的时间运行(其中 n 是 List 的长度)?

9得票3回答
在SWI-Prolog中,"[a|b|c]"会被评估为什么?

在Prolog中,管道操作符返回一个或多个原子头和一个尾部列表。 ?- [a,b,c] = [a,b|[c]]. true. 在单个匹配中嵌套多个管道可以像这样实现: ?- [a,b,c] = [a|[b|[c]]]. true. 声明 [a|b|c] 意味着什么,关于 a、b 和...

8得票2回答
HiLog术语在现代Prolog中是否仍然有用?

Hilog术语(即具有任意项作为函数符合的化合物)在XSB Prolog(或任何其他Prolog)中,仍被认为是一种强大的功能吗?目前有许多使用此功能的XSB项目吗?例如哪些项目? 我问这个问题,因为据我所知,使用ISO内置的call/N同样可以进行高阶编程。 具体来说,我想了解XSB是否...

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

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

26得票3回答
Prolog - 列表的非常规 cons 语法

我在Lee Naish的论文Higher-order logic programming in Prolog中遇到了一个陌生的Prolog语法。这是论文中的第一个代码示例: % insertion sort (simple version) isort([], []). isort(A.As...

18得票4回答
两个变量列表的相等性

如何定义一个元逻辑谓词,使用当前ISO标准(ISO / IEC 13211-1:1995,包括Cor.2)的内置函数,测试(因此仅成功或失败)两个唯一变量列表是否完全相同。 换句话说,如果一个唯一变量列表是另一个列表的排列,则该谓词应该成功。类比于library(ordsets),我们将这个...

7得票2回答
节省空间的函数符号写法

在编写函数符号时,辅助空间消耗通常相当昂贵。这对于标准列表编写尤为关键。 首先考虑输出的大小:而通常的 ignore_ops(false) 编写至少需要 2n+1 个字符来表示长度为 n 的列表,如 [1,2,3],但是标准编写至少需要 7n+2 如 '.'(1,'.'(2,'.'(3,[]...