SWI Prolog允许在顶层之前执行一个非零度的目标,如下所示
swipl -s consultingfile.pl -g start
但是,当一个非零的谓词被指定为
swipl -s consultingfile.pl -g start(1)
它会出错
syntax error near unexpected token '('
在顶级之前,应该如何传递非零arity谓词作为目标?
最佳答案
我认为这与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抱怨方括号。一般来说,最好将项目放入引号中,以便将内容作为单个参数分组。