33得票5回答
SWI-Prolog - 显示长列表

我正在使用 SWI-Prolog,想要打印一个列表,但是如果列表有超过9个项目——它看起来像这样——[1, 15, 8, 22, 5, 19, 12, 25, 3|...] 有没有一种方法可以显示整个列表?

7得票2回答
使用Prolog CLPFD实现32位数字的异或函数

我将尝试在Prolog CLPFD中实现高效的异或(XOR)操作。这个谓词应该很简单,就像这样: xor(A, B, AxorB). A、B和AxorB都是自然数(包括0),其中AxorB是A xor B的结果。 我的主要问题在于效率。首先,我无法找到任何不将这些数字分解为可进一步处...

9得票3回答
将部分列表折叠

这是一个由已删除的回答引发的问题,与这个问题有关。问题可以总结如下: 是否可能在折叠列表时,在折叠过程中生成列表的尾部? 我想表达的是这样的。假设我想计算阶乘(这只是一个愚蠢的例子,仅用于演示),并决定这样做: fac_a(N, F) :- must_be(nonne...

15得票3回答
SWI Prolog如何更改工作目录/获取当前工作目录?

在SWI Prolog终端中,如何查看当前工作目录并更改当前工作目录? 我找到了以下代码: working_directory(CWD, CWD) 但我认为这不是我需要的。

7得票1回答
Prolog中的`shift`/`reset`操作与其他编程语言有何相似之处?

我在这里找到了一个有关Haskell中的shift-reset限定延续的示例(链接): resetT $ do alfa bravo x <- shiftT $ \esc -> do charlie lift $ esc 1 ...

7得票3回答
当启用全局出现检查时,Prolog是否需要垃圾收集?

据我所知,通过声音统一,SLD解析不应创建循环数据结构(这正确吗?) 如果是这样的话,理论上可以以这种方式实现Prolog,而无需垃圾回收(GC)。但是,也可能不需要。 这对基于WAM的Prolog实现是否成立? 这对SWI-Prolog是否成立?(我认为它不是基于WAM的)在全局启用“...

7得票2回答
Prolog中的随机项

我知道可以使用X is random(10)来获取0到10之间的随机数,但是是否有类似的命令可以获取随机匹配项?

31得票2回答
为什么这个Prolog查询既是真的又是假的?

我的SWI-Prolog知识库包含以下两个事实:f(a,b). f(a,c). 现在,如果我提出以下查询:?- f(a,c). true. 但是。?- f(a,b). true ; false. 为什么f(a,b)既为真又为假?当知识库里有三个事实时也会发生这种情况。如果我将f(a,d)添加到...

7得票1回答
从标准输入解析

我该如何解析标准输入(无缓冲)? 如果我理解正确,phrase/2需要一个列表,而library(pure_input)中的phrase_from_file/2需要一个文件。 我通过使用常规谓词(而不是 DCG)和使用内置谓词,如get_char/2和read_line_to_codes/2...

7得票3回答
Prolog列表成员,返回多个结果

我有一个确定列表成员的标准流程: member(X, [X|_]). member(X, [_|T]) :- member(X, T). 我不理解的是,当我提出以下查询时: ?- member(a,[a,b]). 结果是。 True; False. 我本以为当第一个规...