简单的例子:
?- 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/