Пролог: объявление оператора - PullRequest
2 голосов
/ 23 марта 2012

Я определил! (факториал) функцию и зарегистрировал ее как арифметическую функцию и оператор, так что я могу выполнить: A есть 6!.

Теперь я хотел бы определить! (факториал нечетных чисел), но так же - написание предложений, регистрация arithmetic_function и оператора, вызов A равен 7 !! - результаты в Ошибка синтаксиса: ожидается оператор

Как мне, если возможно, зарегистрироваться !! оператор?

Да, я понимаю,! обычно это срез.

1 Ответ

5 голосов
/ 23 марта 2012

! это так называемый одиночный символ , вы не можете иметь два подряд. Если бы это было не так, вы не могли бы написать, например:

c :- !.

но вместо этого придется написать:

c :- ! .

потому что "!." в противном случае будет интерпретироваться как один токен.

Кроме того, если вы позволите! будь оператором, обе версии имеют недопустимый синтаксис (да, SWI все еще принимает его, но, например, GNU Prolog этого не делает). Вам необходимо написать:

c :- (!).

потому что операторы, которые являются операндами, должны быть заключены в квадратные скобки. Вместо! Используйте, например, "f" и "ff", или подгоняйте символы Юникода для вашего варианта использования.

...