2015-06-07 4 views
4

SWI Prolog позволяет выполнять цели до верхнего уровня с не нулевой арностью следующимSWI Prolog пропустить гол с ненулевой арностью через аргументы командной строки

swipl -s consultingfile.pl -g start 

однако, когда предикат с ненулевой арностью определяется следующим образом

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

Это дает ошибку

syntax error near unexpected token '(' 

Какой должна сделать, чтобы передать ненулевой предикат arity как цель перед верхним уровнем?

+1

Что делать, если вы разместите его между кавычками? –

ответ

6

Я думаю, что это не имеет ничего общего с самим SWI-прологом, но больше с обработчиком командной строки.

Если я ставлю цель одинарные кавычки (''), он работает:

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

Кронштейны, вероятно, неправильно интерпретированы оболочкой.

Если я использую вашу команду дает:

$ swipl -s consultingfile.pl -g start(1) 
bash: syntax error near unexpected token `(' 

Ум однако bash перед двоеточием. Это означает, что управление никогда не дается swipl, это bash, который жалуется на скобки.

В целом, лучше всего размещать элементы в кавычках, чтобы группировать контент в виде одного параметра.

+1

Спасибо. Это помогло :) настолько тупой, что я пропустил попытку этого XD –