变量不打印整个值Prolog

时间:2015-06-16 15:14:11

标签: prolog prolog-toplevel

如果我分配类似的东西 process([[baby],[boy],[[is]dancing],[with],[[the][family]]],A), 然后它将输出作为

A = [[baby],[boy],[[is]dancing],[with],[[..][..]]].

我想让它显示终端上的所有值。 就像是 A = [[baby],[boy],[[is]dancing],[with],[[the][family]]].

2 个答案:

答案 0 :(得分:2)

问题是顶层显示时会截断列表。 您可以使用prolog标志toplevel_print_option配置最大嵌套的深度,使用选项max_depth(0),0表示显示所有内容。

帮助程序将修改prolog标志以仅将max_depth更改为0,而其他选项保持不变:

set_toplevel_flags:-
  current_prolog_flag(toplevel_print_options, Opts),
  (select(max_depth(_), Opts, TOpts) -> NOpts=TOpts ; NOpts=Opts),
  set_prolog_flag(toplevel_print_options, [max_depth(0)|NOpts]).

答案 1 :(得分:2)

current_prolog_flag/2谓词与toplevel_print_options标志一起使用。像这样:

?- current_prolog_flag(toplevel_print_options, X).

X = [quoted(true), portray(true), max_depth(10), spacing(next_argument)].

您可以修改max_depth选项值,或者您可以在获得缩写答案后键入 w ,prolog将完全打印答案。按 p 将恢复原始格式。为了让Prolog在打印答案后等待您的输入,您可能希望通过向其添加; true.来为查询添加一些非确定性。有关详细信息,请参阅here