The Big Bang Category Theory
Una introducción progresiva a la teoría de categorías usando Kotlin, explicada por Bernadette, Amy y… sí, ella misma.
![[06-attachments/talks/2019-10-08-the-big-bang-category-theory/2019-10-08-big-bang-category-theory.png]]
Esta charla fue un experimento: explicar teoría de categorías a través de personajes de The Big Bang Theory, usando Kotlin como lenguaje para ilustrar conceptos.
La frase que lo inició todo
“Una mónada es un monoide en la categoría de los endofuntores.”
Una definición que genera pánico en principiantes, memes en programadores funcionales… y curiosidad en cualquiera que haya pasado tiempo suficiente con flatMap.
Tres niveles, tres personajes
Para descomponer esa frase, usé tres niveles de explicación, cada uno representado por un personaje de la serie:
Bernadette – Nivel 1: Intuición práctica
- Qué es un tipo envoltorio (por ejemplo:
Optional,List,Result) - Cómo “envolver” un valor y aplicar una función
- Por qué
mapno alcanza yflatMapaparece - Ejemplos concretos en Kotlin con funciones lambda
“Si tenés algo y lo querés transformar, pero ese algo puede no estar, necesitás una mónada.”
Amy – Nivel 2: Fundamentos matemáticos
- Qué es una categoría: objetos y morfismos
- Qué es un endofunctor y cómo se representa en código
- Definición formal de mónada (con
unit,bindy las leyes) - Cómo Kotlin modela estos conceptos con tipos genéricos y lambdas
“Un monoide es una estructura con una operación asociativa y un elemento neutro. Aplicalo a funciones, y ahí aparece la mónada.”
Penny – Nivel 3: Filosofía, metáfora y mindfuck
- La mónada como un contrato de contexto
- Las mónadas como forma de estructurar efectos sin perder composición
- Por qué se sienten mágicas, pero no lo son
- Cómo el lenguaje y nuestra intuición a veces nos juega en contra
“No entendí todo… pero ahora sé por qué me parecía tan raro lo de
suspend,FlowyflatMapConcat.”
Kotlin como vehículo
- Usamos ejemplos con
Result<T>,List<T>ysuspendfunctions - Vimos cómo se pueden componer funciones dentro de contextos
- Exploramos similitudes entre mónadas y otros patrones (como pipelines o builders)
Key Takeaways
- Las mónadas no son magia negra: tienen definición y propósito.
- Kotlin permite modelarlas sin necesidad de una librería funcional hardcore.
- Entender teoría de categorías puede mejorar cómo diseñás tus APIs.
- La intuición, la teoría y la metáfora pueden convivir (y complementarse).
- Aprender cosas difíciles es más fácil cuando te reís en el proceso.
Recursos recomendados
- Category Theory for Programmers – Bartosz Milewski
- Arrow – Kotlin Functional Library
- Kotlin Coroutines & Flow
- Functors, Applicatives, and Monads in Pictures
Conclusión
La teoría de categorías puede parecer intimidante, pero con las metáforas adecuadas —y un poco de humor— se vuelve mucho más accesible. Si alguna vez sentiste que map, flatMap y suspend eran parte del lado oscuro… quizás esta charla te ayude a verlos con otros ojos.
Dónde se dio
- Asturias DevFest 2019
- Commit Conf 2019
- T3chFest 2019