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

时间:2015-06-07 21:29:11

标签: bash prolog swi-prolog logic-programming

SWI Prolog允许在非最低级别的顶级之前执行目标,如下所示

swipl -s consultingfile.pl -g start

但是当具有非零arity的谓词指定如下

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

它出错

syntax error near unexpected token '('

如何将非零arity谓词作为最高级别之前的目标传递?

1 个答案:

答案 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。

通常,最好将项目放入引号,以便将内容分组为单个参数。