Scala - префиксные унарные операторы

Недавно я дал Scala второй шанс и начал с проекта, который я всегда реализую (на функциональных или псевдофункциональных языках): автоматическое рассуждение для логики высказываний (а позже и логики предикатов).

Теперь, Я попытался сделать нотацию пропозициональной логики в самом языке настолько красивой, насколько это возможно, и я дошел до этого - с помощью неявного преобразования (String -> Atom):

("A" and "B") implies "C"

Функции "and" и "подразумевают "(и" или "и" эквивалент ") - это простые методы, которые вызывают соответствующий конструктор класса case. Однако при реализации" not "я застрял в одной из двух следующих нотаций:

("A" and "B").not
Not("A" and "B")

Есть ли способ обмануть Scala для принятия желаемого:

not("A" and "B")

Желательно без переименования класса «Not» в «not», потому что я Я хотел бы назвать это «¬» или как-то еще в будущем.

10
задан wen 6 September 2010 в 12:22
поделиться