1

1:1つのクエリの場合。a(X).複数の回答を返します。プログラムにすべての回答とトレースを一度に返すにはどうすればよいですか。

2:プログラムを自動的に実行するにはどうすればよいですか?つまりa(X).、ファイルをスイッチにロードしたとき.pl、つまりコンマの後にすべての回答を出力します

% swipl -f foo.pl

その後、それはのすべての答えを返しますX

ありがとうございました

4

2 に答える 2

4

トレースだけでなくも必要です

swipl -s f.pl -g "leash(-all),trace,numbers(X),print(X),nl,fail." -t halt
% /home/carlo/.plrc compiled 0.04 sec, 1,439 clauses
% /home/carlo/prolog/f.pl compiled 0.00 sec, 2 clauses
   Call: (6) numbers(_G1453)
   Call: (7) between(1, 10, _G1453)
   Exit: (7) between(1, 10, 1)
   Exit: (6) numbers(1)
   Call: (6) print(1)
1
   Exit: (6) print(1)
   Call: (6) nl

   Exit: (6) nl
   Call: (6) fail
   Fail: (6) fail
   Redo: (7) between(1, 10, _G1453)
   Exit: (7) between(1, 10, 2)
   Exit: (6) numbers(2)
   Call: (6) print(2)
2
   Exit: (6) print(2)
...
于 2013-02-22T00:24:28.687 に答える
3

単純な句を含む単純なファイルを次に示します。

$> cat f.pl
numbers(X) :-
  between(1,10,X).

-g目標を設定するためのオプションを使用できます。

$> swipl -s f.pl -g "numbers(X),print(X),nl,fail." -t halt.
% .../f.pl compiled 0.00 sec, 2 clauses
1
2
3
4
5
6
7
8
9
10
于 2013-02-21T20:29:55.463 に答える