Я недавно дал Scala второй шанс и начал с проекта, который я всегда реализую (на функциональных или псевдо-функциональных языках): автоматизированный анализ логики высказываний (и более поздней логики предикатов).
Теперь я попытался сделать нотацию логики высказываний в самом языке настолько красивой, насколько это возможно, и дошел до этого - неявным преобразованием (String -> Atom):
("A" and "B") implies "C"
Функции "и" и "подразумевает" (и "или" и "эквивалент") являются простыми методами, которые вызывают соответствующий конструктор класса case. Тем не менее, при реализации «нет», я застрял с одной из двух следующих обозначений:
("A" and "B").not
Not("A" and "B")
Есть ли способ обмануть Скалу, чтобы он принял желаемое:
not("A" and "B")
Желательно без переименования класса «Не» в «не», потому что я хотел бы назвать его «¬» или как-нибудь еще в будущем.