← Todas las charlas 3 sesiones

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.

8 de octubre de 2019

![[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é map no alcanza y flatMap aparece
  • 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, bind y 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, Flow y flatMapConcat.”

Kotlin como vehículo

  • Usamos ejemplos con Result<T>, List<T> y suspend functions
  • Vimos cómo se pueden componer funciones dentro de contextos
  • Exploramos similitudes entre mónadas y otros patrones (como pipelines o builders)

Key Takeaways

  1. Las mónadas no son magia negra: tienen definición y propósito.
  2. Kotlin permite modelarlas sin necesidad de una librería funcional hardcore.
  3. Entender teoría de categorías puede mejorar cómo diseñás tus APIs.
  4. La intuición, la teoría y la metáfora pueden convivir (y complementarse).
  5. Aprender cosas difíciles es más fácil cuando te reís en el proceso.

Recursos recomendados

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