Referencias nulas, spinners de carga que muestran errores y datos simultáneamente, pagos capturados y anulados a la vez. No son hipotéticos; son consecuencia directa de tipos que mienten sobre el dominio.
Un semáforo que está en rojo y verde a la vez. Un usuario que está logueado y deslogueado simultáneamente. Los flags booleanos hacen estos estados absurdos perfectamente representables, y ese es el problema.
Cada enum que escribes es una gramatica formal. Cada sealed trait es un conjunto de reglas de produccion. Has estado haciendo metodos formales todo este tiempo; simplemente no sabias el nombre. Trazamos la conexion desde la jerarquia de Chomsky hasta tus tipos de dominio en Rust y Scala.
Al volver sobre el trait TaskRepository de la serie Todo CLI, me di cuenta de que no solo estaba dibujando una frontera arquitectónica. También estaba definiendo qué podía decirse en esa frontera, y eso se parece mucho más a una gramática de lo que pensé al principio.