La ontología de Elm
El mapa mental de Elm y TEA: el lenguaje funcional puro sin errores en runtime, Model/update/view, los efectos como datos, y el legado que sembró en Redux, TCA y MVI.
Elm es el abuelo del que casi nadie habla y al que todos deben algo. Redux tomó de él el estado único y la transición pura; The Composable Architecture copió su idea de tratar los efectos como datos; MVI en Android es el mismo ciclo con otro nombre. Y sin embargo Elm no es una arquitectura: es un lenguaje completo, con una promesa que suena a exageración hasta que la compruebas —cero errores en tiempo de ejecución— y un compilador que se comporta menos como un juez y más como un colega paciente. Este mapa te da la visión aérea antes de recorrerlo.
- Ver el mapa mental completo de Elm y de TEA.
- Entender la promesa de cero errores en runtime y qué la sostiene.
- Situar los efectos como datos, los decoders y los ports.
- Reconocer el linaje que conecta Elm con Redux, TCA y MVI.
El territorio, de un vistazo
mindmap
root((Elm))
Arquitectura
Model
Msg y update
view
Cmd y Sub
Lenguaje
Tipos e inferencia
Custom types
Maybe y Result
Funciones y pipes
Records
Fronteras
Decoders JSON
Ports
Flags
Custom elements
Practica
Routing y SPA
Testing y fuzz
Estilos y elm-ui
Rendimiento
Legado
Redux
TCA
MVILas ideas clave
Un ciclo cerrado
Un Msg entra, update produce un Model nuevo, view lo dibuja. No hay más caminos. Toda la aplicación es esa vuelta, repetida, y por eso se puede razonar sobre ella entera.
Los efectos son datos
update nunca hace una petición: devuelve un Cmd que la describe. El runtime la ejecuta y trae el resultado como otro Msg. La función sigue siendo pura, y por tanto testeable sin mocks.
El compilador es un aliado
Sin null, sin excepciones, sin any. Si un tipo cambia, el compilador te lleva de la mano a cada sitio que hay que tocar, con mensajes que explican en vez de acusar.
Las fronteras están vigiladas
El JSON del exterior no se cree a ciegas: se decodifica. JavaScript no se llama directamente: se le habla por un buzón (ports). Lo impuro existe, pero siempre tras una aduana.
Por qué importa
Casi todo lenguaje moderno promete seguridad y luego deja una puerta trasera: any en TypeScript, ! en Kotlin, unwrap en Rust, excepciones en todas partes. Elm hizo lo contrario: cerró las puertas. No hay escotilla de escape para el sistema de tipos, no hay excepciones que puedas lanzar, no hay null. La consecuencia práctica —una app de Elm en producción que no lanza errores en el navegador durante años— no es magia, es aritmética: si el único modo de fallo que queda es un bug de lógica, has eliminado categorías enteras de error. El precio también es real y este track lo dirá sin adornos: menos librerías, menos flexibilidad, y a veces la sensación de estar peleando contra el compilador cuando solo querías salir del paso. Pero aquí está lo interesante, y la razón de que Elm merezca su propio track dentro de esta categoría aunque nunca escribas Elm profesionalmente: sus ideas se escaparon del lenguaje y hoy gobiernan buena parte del frontend. Cuando escribes un reducer en Redux, cuando devuelves un Effect en TCA, cuando reduces un intent a estado en Orbit, estás usando Elm sin saberlo. Aprender el original te da algo que las copias no: entender por qué cada pieza está donde está.
El camino
- Niveles 1–2 · La arquitectura — Model, Msg, update y view; los efectos con
CmdySub, y el runtime. - Niveles 3–8 · El lenguaje — tipos e inferencia, custom types,
Maybe/Result, funciones y pipes, records, y el compilador como copiloto. - Niveles 9–13 · Construir — la vista, decoders JSON, ports e interop, aplicaciones grandes, y routing.
- Niveles 14–17 · Producción — testing y fuzz, estilos y elm-ui, rendimiento y el runtime, y el despliegue.
- Niveles 18–21 · Perspectiva — la filosofía, la comparación con el ecosistema, el legado, y la síntesis final.
- Estudia el ciclo del mapa mental y di en voz alta qué hace cada pieza; si puedes explicarlo, ya entiendes TEA.
- Piensa en el último error de runtime que viste en producción: ¿de qué categoría era? ¿null, tipo inesperado, excepción no capturada?
- Marca cuáles de esos errores serían imposibles en Elm. Esa lista es el argumento del lenguaje.
- Comprométete con la idea central: los efectos son datos, y las fronteras se vigilan.