0

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

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

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

4

2 回答 2

2

问题是顶层在显示时会截断列表。您可以使用 prolog 标志配置最大嵌套的深度toplevel_print_option,使用 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]).
于 2015-06-16T15:42:51.373 回答
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.到查询中添加一些不确定性。有关更多信息,请参见此处

于 2015-06-16T15:46:07.270 回答