Escribe un predicado una vez y ejecútalo contra SQL, MongoDB, Elasticsearch o cualquier backend. Una introducción a criteria4s y a su forma de resolver el Problema de la Expresión en código real.
Escribe un predicado una vez y ejecútalo contra SQL, MongoDB, Elasticsearch o cualquier backend. Una introducción a criteria4s y a su forma de resolver el Problema de la Expresión en código real.
Model, Update, View. Tres piezas, un bucle, cero sorpresas. Explicamos The Elm Architecture desde cero con ejemplos lado a lado en Rust y Scala, rastreamos de donde viene el patron, por que sigue apareciendo en TUIs y codebases funcionales, y cuando deja de ser la herramienta correcta.
Los tipos se llaman algebraicos porque obedecen aritmética. Los tipos producto multiplican, los tipos suma suman. Entender esta aritmética explica por qué un enum con 5 variantes es infinitamente más preciso que 4 flags booleanos.
Cada trait en tu arquitectura hexagonal es un algebra tagless-final. Cada impl es un interprete. Has estado escribiendo semantica denotacional sin saberlo. Trazamos la conexion desde el paper de Kiselyov a traves de Cats-Effect de Scala hasta los port traits de Rust, y mostramos por que el patron que los academicos llaman ‘finally tagless’ es el mismo patron que los practicantes llaman ‘inyeccion de dependencias.’
Agregar un nuevo tipo es facil en OOP, dificil en FP. Agregar una nueva operacion es facil en FP, dificil en OOP. Philip Wadler nombro esto el Expression Problem en 1998. Mostramos como se manifiesta en Rust y Scala, y anticipamos la resolucion.
Tu expresion match es semantica operacional. Tu funcion pura es semantica denotacional. El borrow checker de Rust es semantica axiomatica. Tres marcos formales, tres formas de asignar significado al codigo, y has estado usando los tres sin saberlo.
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.