Пролог: объявление оператора
Я определил! (факториал) функция и зарегистрировал ее как арифметическую функцию и оператор, так что я могу выполнить: A равно 6!.
Теперь я хотел бы определить! (факториал нечетных чисел), но так же - написание предложений, регистрация arithmetic_function и оператора, вызов A равен 7!! - результаты в SyntaxError: ожидается оператор
Как мне, если возможно, зарегистрироваться!! оператор?
Да, я понимаю, это обычно разрез.
1 ответ
! это так называемый персонаж соло, вы не можете иметь два подряд. Если бы это было не так, вы не могли бы написать, например:
c :- !.
но вместо этого придется написать:
c :- ! .
так как "!." в противном случае будет интерпретироваться как один токен.
Кроме того, если вы позволите! будь оператором, обе версии имеют недопустимый синтаксис (да, SWI все еще принимает его, но, например, GNU Prolog этого не делает). Вам нужно написать:
c :- (!).
потому что операторы, которые являются операндами, должны быть заключены в квадратные скобки. Вместо! Используйте, например, "f" и "ff", или подгоняйте символы Unicode для вашего случая использования.