SWI-Prolog - 显示长名单

时间:2011-11-22 18:23:09

标签: prolog swi-prolog prolog-toplevel

我正在使用SWI-Prolog并且我正在尝试打印列表,但如果列表中有超过9个项目 - 它看起来像那样 -

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

有没有办法显示整个列表?

5 个答案:

答案 0 :(得分:23)

查看:http://www.swi-prolog.org/FAQ/AllOutput.html

简单的解决方案是在给出答案后键入 w ,即:

?- n_queens_problem(10,X).
X = [1, 3, 6, 8, 10, 5, 9, 2, 4|...] [write]
X = [1, 3, 6, 8, 10, 5, 9, 2, 4, 7] 

按下“w”键后,“[写入]”显示在最后,完整的解决方案出现在下一行。

答案 1 :(得分:4)

我找到了两种方法。

1

?- set_prolog_flag(answer_write_options,[max_depth(0)]).
true.

然后执行打印截断列表的命令。

set_prolog_flag documentation

2

?- atom_chars(goodbye_prolog, X) ; true.

AllOutput documentation

; true.放在导致长列表的通话结束时。然后按键盘上的 w 键。结果是:

?- sudoku([_,_,2,3,_,_,_,_,_,_,_,_,3,4,_,_], Solution); true.
Solution = [4, 1, 2, 3, 2, 3, 4, 1, 1|...] [write]
Solution = [4, 1, 2, 3, 2, 3, 4, 1, 1, 2, 3, 4, 3, 4, 1, 2] ;
true.

答案 2 :(得分:2)

如果prolog只返回一个答案,您可以输入“; true”等待它。在谓词之后。然后,如果按“w”,您将看到文档中写的整个列表:http://www.swi-prolog.org/FAQ/AllOutput.html

答案 3 :(得分:1)

?- createListSomehow(List), print(List), nl.

会做得很整齐。这就是我的工作。

变异:

?- use_module(library(pprint)). %load a library to do pretty-printing
?- createListSomehow(List), print_term(List,[]), nl.

[]的{​​{1}}参数是一个(空的)选项列表。有关详细信息,请see documentation

答案 4 :(得分:1)

如果您希望SWI-Prolog默认显示整个列表,则可以将此行添加到init file

:- set_prolog_flag(answer_write_options,[max_depth(0)]).

您可以从GUI轻松修改init文件(Settings => User init文件)。