如何从命令行运行prolog文件,而不将其放到repl?

如何从命令行运行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 /

我试图从命令行执行一个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 /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
$