Mónadas diminutas y sin tipos: una introducción práctica en JavaScript

Fuentes: Tiny, Untyped Monads

Las mónadas son estructuras usadas en programación funcional para abstraer el paso explícito de contexto y simplificar el código, pero su explicación suele ser densa o estar oculta tras tipos e instancias complejas. Este artículo demuestra que, en el fondo, una mónada se reduce a mecanismos muy simples, y lo ilustra con implementaciones en JavaScript —un lenguaje sin sistema de tipos— a partir del trabajo del autor en "bruijn", un lenguaje puro no tipado.

El recorrido parte de una introducción a las estructuras de datos funcionales basadas en selectores y constructores, que permiten almacenar y extraer valores sin recurrir a objetos ni arrays. Sobre esa base se construye la mónada Maybe (también llamada Option), que encapsula un valor o la ausencia de él, útil por ejemplo para representar la división por cero. A continuación se presenta la mónada Either, que almacena dos valores etiquetados como "Left" y "Right", pensada para propagar errores. Ambas se encadenan mediante la operación bind, que extrae el valor de la mónada y lo aplica a la siguiente función.

El artículo también aborda mónadas más complejas como State, que adjunta estado mutable de forma pura encadenando generadores de números aleatorios, y menciona la posibilidad de derivar una mónada Writer para acumular registros. Todo el código está disponible en el repositorio "picomonad" de GitHub. El autor aclara que el material es divulgativo y no debe usarse en producción.