我最近给了 Scala 第二次机会,并从我经常实现的项目开始(使用函数式或伪函数式语言):命题逻辑(以及后来的谓词逻辑)的自动推理器。
现在,我试图在语言本身中尽可能地获得命题逻辑的符号,并且我已经做到了这一点 - 使用隐式转换(String -> Atom):
("A" and "B") implies "C"
函数“and”和“implies”(以及“or”和“equivalent”)是调用相关案例类构造函数的简单方法。但是,在实现“不”时,我遇到了以下两种表示法中的任何一种:
("A" and "B").not
Not("A" and "B")
有没有办法欺骗 Scala 接受所需的:
not("A" and "B")
最好不要将类“Not”重命名为“not”,因为将来我可能会称它为“¬”或其他名称。