SWI Prolog允许在非最低级别的顶级之前执行目标,如下所示
swipl -s consultingfile.pl -g start
但是当具有非零arity的谓词指定如下
时swipl -s consultingfile.pl -g start(1)
它出错
syntax error near unexpected token '('
如何将非零arity谓词作为最高级别之前的目标传递?
答案 0 :(得分:6)
我认为这与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。
通常,最好将项目放入引号,以便将内容分组为单个参数。