在Prolog中,将变量X与列表[1|X]统一是获取一个无限个1的列表的正常方法吗?SWI-Prolog没有任何问题,但GNU Prolog会导致程序挂起。 我知道在大多数情况下,我可以用以下代码替换列表: one(1). one(X) :- one(X). 但我的问题明确地是,是否可...
我是Prolog的新手,但我卡在了这个看似简单的命令上。我已经成功加载了一个知识库,但每当我尝试使用assert(甚至是help)时,都会出现以下消息: uncaught exception: error(existence_error(procedure,assert/1),top_lev...
标准 Prolog 谓词的时间复杂度上限有保证吗? 例如:在任何符合标准的 Prolog 系统中,sort(+List, ?SortedList) 是否一定以 O(nlog(n)) 的时间运行(其中 n 是 List 的长度)?
为什么Prolog中的**/2(xfx)和(^)/2(xfy)参数优先级不同呢?这会导致一些微小的不一致,例如以下内容: ?- X = 1, Y is 1 ^ -X. X = Y, Y = 1. 并且: ?- Y is 1 ** -1. Y = 1. 但是: ?- X = 1, ...
在编写函数符号时,辅助空间消耗通常相当昂贵。这对于标准列表编写尤为关键。 首先考虑输出的大小:而通常的 ignore_ops(false) 编写至少需要 2n+1 个字符来表示长度为 n 的列表,如 [1,2,3],但是标准编写至少需要 7n+2 如 '.'(1,'.'(2,'.'(3,[]...