我想知道从shell调用它时如何从SWI-Prolog输出。
假设我有一个简单的知识库,kb.pl
:
dad(elvis, lisaMarie).
dad(john, julian).
我可以从shell调用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正确无法找到匹配的事实。
我的问题是:如何打印所有匹配项,以便从shell中我可以看到输出,就像我在Prolog环境中一样? E.g。
$ swipl --quiet -s kb.pl -t "dad(elvis,X)" --magicdust
X = lisaMarie.
我认为--quiet
不是问题所在。它只是压制prolog启动消息。见SWI-Prolog Command-Line Options
答案 0 :(得分:5)
自己打印,例如:
$ swipl -q -s kb.pl -t "dad(elvis,X), writeln(X), false"