Recientemente le he dado a Scala una segunda oportunidad, y comencé con el proyecto que siempre implementé (en lenguajes funcionales o pseudo-funcionales): un razonador automático para lógica proposicional (y posterior lógica de predicados).Scala - Prefijo Unary Operators
Ahora, he tratado de conseguir la notación de la lógica proposicional en el lenguaje mismo es tan bonita como sea posible, y he llegado hasta aquí - con una conversión implícita (String -> Atom):
("A" and "B") implies "C"
Las funciones "y" e "implica" (y "o" y "equivalente") son métodos simples que llaman al constructor de la clase de caso relevante. Sin embargo, al aplicar "no", se queda bloqueado con cualquiera de las dos siguientes anotaciones:
("A" and "B").not
Not("A" and "B")
¿Hay una manera de engañar a Scala para que acepten la deseada:
not("A" and "B")
Preferiblemente sin cambiar el nombre de la clase "No" a "no", porque me gustaría llamarlo "¬" o algo más, en el futuro.
Gracias, yo no sabía que podía usar "importaciones estáticas" en Scala - esto me dejaría con una importación obligatoria en cada página, sin embargo, que - en conjunto con la conversión implícita sería una gran cantidad de código adicional para cada uso. – wen
@Dennetik: si simplemente pones todo en el objeto Logic, 'import Logic._' es todo lo que necesitas para usar tus clases. – sepp2k
No había pensado en eso, todavía tengo que acostumbrarme a la libertad de Scala, en comparación con Java ... – wen