2015-06-16 22 views
0

如果我給你像 process([[baby],[boy],[[is]dancing],[with],[[the][family]]],A), 那麼它給作爲變量未打印整個價值序言

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

輸出我想讓它顯示在終端所有的值。 類似於 A = [[baby],[boy],[[is]dancing],[with],[[the][family]]].

+1

請參閱[所有這些](http://stackoverflow.com/search?q= [prolog-toplevel] + max_depth)答案。 – false

回答

2

問題是,當頂層顯示時,頂層會截斷列表。 您可以使用prolog標誌toplevel_print_option配置最大嵌套深度,選項爲max_depth(0),其中0表示顯示所有內容。

助手程序將修改序言標誌只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]). 
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¯¯,和序言將充分打印答案。按p將恢復原始格式。爲了讓Prolog在打印答案後等待您的輸入,您可能需要在查詢中添加; true.以添加一些非確定性。欲瞭解更多信息,請參閱here