SWI Prolog 通过命令行参数传递一个非零参数的目标

SWI Prolog pass a goal with non-zero arity through the command line arguments

SWI Prolog 允许在具有非零元数的顶级之前执行目标,如下所示

swipl -s consultingfile.pl -g start

然而,当一个非零元数的谓词被指定如下时

swipl -s consultingfile.pl -g start(1)

报错

syntax error near unexpected token '('

要在顶级之前将非零元数谓词作为目标传递,应该怎么做?

我认为这 nothing/not 与 SWI-prolog 本身有很大关系,但更多与命令行处理程序有关。

如果我将目标放在单引号 ('') 之间,它会起作用:

swipl -s consultingfile.pl -g 'start(1)'

括号可能被 shell 错误地解释了。

如果我使用你的命令,它会给出:

$ swipl -s consultingfile.pl -g start(1)
bash: syntax error near unexpected token `('

但是请注意冒号前的 bash。这意味着控制权从未真正给予 swipl,是 bash 抱怨括号。

一般来说,最好将项目放在引号中,以便将内容分组为单个参数。