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とオプション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を押すと元のフォーマットに戻ります。回答を出力した後、プロローグが入力を待機するようにするには、クエリに追加して非決定性をクエリに追加することをお勧めします; true.。詳細については、こちらを参照してください。

于 2015-06-16T15:46:07.270 に答える