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 抱怨括号。
一般来说,最好将项目放在引号中,以便将内容分组为单个参数。
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 抱怨括号。
一般来说,最好将项目放在引号中,以便将内容分组为单个参数。