ant*_*618 4 bash prolog logic-programming swi-prolog
SWI Prolog允许在非最低级别的顶级之前执行目标,如下所示
swipl -s consultingfile.pl -g start
Run Code Online (Sandbox Code Playgroud)
但是,当具有非零arity的谓词指定如下时
swipl -s consultingfile.pl -g start(1)
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误
syntax error near unexpected token '('
Run Code Online (Sandbox Code Playgroud)
如何将非零arity谓词作为最高级别之前的目标传递?
我认为这与SWI-prolog本身没什么关系,但与命令行处理程序有关.
如果我将目标放在单引号('')之间,它可以工作:
swipl -s consultingfile.pl -g 'start(1)'
Run Code Online (Sandbox Code Playgroud)
shell可能错误地解释了括号.
如果我使用你的命令它给出:
$ swipl -s consultingfile.pl -g start(1)
bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
但是请注意bash结肠前.这意味着永远不会给予控制swipl,抱怨括号的是bash.
通常,最好将项目放入引号,以便将内容分组为单个参数.