如何从命令行运行prolog文件,而不将其放到repl?
我试图从命令行执行一个prolog脚本。我的尝试是基于我在 然而,这对任何非平凡的例子都不起作用(即,除了“hello world”例子之外的任何其他例子) 我使用如何从命令行运行prolog文件,而不将其放到repl?,prolog,swi-prolog,Prolog,Swi Prolog,我试图从命令行执行一个prolog脚本。我的尝试是基于我在 然而,这对任何非平凡的例子都不起作用(即,除了“hello world”例子之外的任何其他例子) 我使用$swipl-q-s temp.p执行此操作,并得到以下错误 Warning: temp.p:10: Singleton variables: [X] ERROR: temp.p:11: No permission to modify static procedure `halt/0' Defined at /
$swipl-q-s temp.p
执行此操作,并得到以下错误
Warning: temp.p:10:
Singleton variables: [X]
ERROR: temp.p:11:
No permission to modify static procedure `halt/0'
Defined at /opt/local/lib/swipl/boot/init.pl:3867
如何从命令行执行此操作,获得结果,但不直接返回repl?您最大的问题是源代码有很多问题。我已经这样修复了它们:
parent(pam,bob).
parent(tom,bob).
parent(tom,liz).
parent(bob,ann).
parent(bob,pat).
parent(pat,jim).
main :-
parent(X,jim),
format('~a is the parent of jim~n', [X]),
halt.
现在程序没有错误,您可以通过在命令行上提供目标来执行它,而无需返回repl:
$ swipl -q -s temp.pl -g main
pat is the parent of jim
$
$ swipl -q -s temp.pl -g main
pat is the parent of jim
$