2

シェルから SWI-Prolog を起動したときに、どのように SWI-Prolog から出力を取得するのか疑問に思っています。

簡単なナレッジ ベースがあるとしkb.plます。

dad(elvis, lisaMarie).
dad(john, julian).

シェルから SWI-Prolog を呼び出すことができます。

$ swipl --quiet -s kb.pl -t listing

そして、私のナレッジ ベースのリストが に出力されstdoutます。私がこれを試してみると:

$ swipl --quiet -s kb.pl -t "dad(elvis, X)"
$ echo $?
0

出力は表示されませんが、リターン コードを照会するとゼロになるため、一致が見つかったことがわかります。同様に:

$ swipl --quiet -s kb.pl -t "dad(morrisey, X)"
$ echo $?
1

プロローグが一致する事実を正しく見つけられなかったことを示しています。

私の質問は次のとおりです: Prolog 環境にいるときのように、シェルから出力を確認できるように、すべての一致を印刷するにはどうすればよいですか? 例えば

$ swipl --quiet -s kb.pl -t "dad(elvis,X)" --magicdust
X = lisaMarie.

問題はないと思います--quiet。プロローグの起動メッセージを抑制しているだけです。SWI-Prolog コマンドライン オプションを参照してください。

4

1 に答える 1

5

たとえば、次のように自分で印刷します。

$ swipl -q -s kb.pl -t "dad(elvis,X), writeln(X), false"
于 2012-06-27T20:57:07.290 に答える