swi-prolog - 如何在不按空格键的情况下查看 SWI-Prolog 中的所有答案?

标签 swi-prolog prolog-toplevel

简单的例子:

?- between(1,10,X).
X = 1 ;
X = 2 ;
X = 3 ;
X = 4 ;
X = 5 ;
X = 6 ;
X = 7 ;
X = 8 ;
X = 9 ;
X = 10.

当使用 SWI-Prolog 使用 REPL 查看下一个答案时,必须按下空格键。

如何在不按空格键的情况下将所有结果列出到屏幕上?

请注意类似的问题。

如果你通过搜索找到了这个问题,而你真正的问题是

I'm using SWI-Prolog and I'm trying to print a list but if the list has more than 9 items - it look like that -

[1, 15, 8, 22, 5, 19, 12, 25, 3|...] 

is there a way to show the whole list?



然后看这些问答:

SWI-Prolog - show long list
SWI-Prolog how to show entire answer (list)?

最佳答案

“hackish”解决方案是添加 print(X), nl, fail到电话。这里print(X)当然可以打印任何相关信息。例如 between(1,10,X), print(X), nl, fail .

这自 print/1 [swi-doc] 起有效只是打印传递给它的术语的另一个谓词。 nl/0 [swi-doc]将打印一个新行字符,和 fail/0 [swi-doc]总是失败。

因此,我们让 Prolog 提出解决方案,打印这些,打印新行,以及 fail将“激活”回溯机制,旨在寻找另一个再次打印并失败的解决方案。

最终所有解决方案都被打印出来,因此调用失败。这因此产生:

?- between(1,10,X), print(X), nl, fail.
1
2
3
4
5
6
7
8
9
10
false.

关于swi-prolog - 如何在不按空格键的情况下查看 SWI-Prolog 中的所有答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54245313/

相关文章:

prolog - 如何在 SWI-Prolog 中跟踪内置的 append/3?

Prolog初学者求助获取当前时间

prolog - swi-prolog 和 yap 的不同结果

java - 如何在Linux上使用JPL(双向Java/Prolog接口(interface))?

prolog - swi prolog 中的优化

prolog - PROLOG 查询中是/否返回

PROLOG 结果与真实结果

prolog - 使 Prolog 返回一个解决方案并停止显示查询选项

prolog - 为什么 swipl 的响应不一致?

matrix - 为什么 "..."出现在我的 Prolog 矩阵答案中