SWI Prolog 允许在具有非零参数的顶级之前执行目标,如下所示
swipl -s consultingfile.pl -g start
但是,当按如下方式指定具有非零元数的谓词时
swipl -s consultingfile.pl -g start(1)
它给出了一个错误
syntax error near unexpected token '('
应该怎么做才能在顶层之前传递一个非零元数谓词作为目标?
SWI Prolog 允许在具有非零参数的顶级之前执行目标,如下所示
swipl -s consultingfile.pl -g start
但是,当按如下方式指定具有非零元数的谓词时
swipl -s consultingfile.pl -g start(1)
它给出了一个错误
syntax error near unexpected token '('
应该怎么做才能在顶层之前传递一个非零元数谓词作为目标?
我认为这与 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。
通常,最好将项目放在引号中,以便将内容分组为单个参数。