¿Qué es la teoría de categorías en programación?

| Última modificación: 12 de agosto de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabías que puedes aplicar la teoría de categorías en programación?

Este es un concepto originalmente usado en la rama de las matemáticas, pero su uso ha ido en crescendo durante los últimos años en la programación funcional. La teoría de categorías en programación tiene un objetivo muy claro: abstraer y unificar estructuras matemáticas diversas por medio del uso de objetos y morfismos. Algunos de sus términos relacionados son functores, mónadas o tipos dependientes. Si alguna vez has escuchado sobre estos conceptos, entonces te has topado de modo superficial con la teoría de categorías en programación.

teoría de categorías en programación

¿Qué es y cuál es la base de la teoría de categorías en programación?

De modo básico, una categoría se define por los objetos y los morfismos o flechas, las cuales representan las relaciones entre objetos. Para entender mejor la teoría de categorías en programación, piensa en los objetos como nodos y en los morfismos como flechas que conectan esos nodos. Si puedes componer dos flechas, el resultado será otra flecha, lo que reflejará una estructura muy similar a lo que son las funciones en matemáticas.

Veamos algunos ejemplos y conceptos comunes de la teoría de categorías en programación:
  1. Conjuntos y funciones: En programación, podemos pensar en un conjunto como un tipo de dato, y en una función como el mapeo entre estos conjuntos. Por ejemplo, en Haskell, un functor es algo que puede ser mapeado, y las listas son un ejemplo típico de functor.
  2. Mónadas: Un concepto central en la programación funcional, las mónadas pueden ser vistas como un tipo especial de functor que permite encadenar operaciones, manejando contextos como efectos secundarios o computaciones encadenadas.

Functores: el puente entre categorías

Dentro de la teoría de las categorías en programación, el concepto de functores es esencial, como habrás notado hasta ahora. Un functor es básicamente un mapa entre dos categorías que busca conservar la estructura categórica. Es decir, un functor agarra un tipo de dato y lo transforma en otro tipo de dato, al mismo tiempo que mantiene las relaciones (morfismos) entre ellos.

En Haskell, los functores se definen del siguiente modo:

class Functor f where
fmap :: (a -> b) -> f a -> f b

Aquí, fmap toma una función (a -> b) y un functor f a, y devuelve un nuevo functor f b. La clave es que la estructura del functor se mantiene, lo que significa que fmap no altera la estructura de los datos, sino que aplica una función a los elementos contenidos en la estructura.

Maybe en Haskell: ejemplo

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Tengamos en consideración el tipo Maybe en Haskell:

data Maybe a = Nothing | Just a

Un valor de Maybe Int puede contener un número entero (Just 3) o no (Nothing). La instancia de Functor para Maybe se ve así:

instance Functor Maybe where
fmap _ Nothing = Nothing
fmap f (Just x) = Just (f x)

Cuando hay un valor (Just x), fmap aplica la función f a ese valor y retorna el resultado envuelto nuevamente en Just. Si no hay valor (Nothing), simplemente retorna Nothing.

Teoría de categorías aplicada a la programación

La aplicación de la teoría de categorías en programación no solo trabaja con conceptos abstractos, sino que también tiene implicaciones prácticas, como lo mencionamos al inicio de este post, en la programación funcional. Tenemos como ejemplo a Agda, que implementa varios conceptos de la teoría de categorías en programación, como son los functores, mónadas y tipos dependientes.

En Agda los functores no solo cumplen una estructura básica, sino que también es necesario que se adhieran a ciertas leyes matemáticas, lo que garantiza un correcto funcionamiento.

En este artículo sobre Teoría de categorías aplicada a la programación funcional con Agda puedes aprender más al respecto sobre este tema en específico.

La teoría de categorías en programación es un modo de pensar la manera en cómo los diferentes componentes del código se relacionan entre sí. Esto permite no solamente construir aplicaciones robustas, sino también facilitar la identificación y corrección de errores, de manera preventiva.

Si estás listo para adentrarte en una nueva aventura, aprender mucho sobre código y por supuesto programar, no dudes en unirte al bootcamp en programación inicial que tenemos para ti en Keepcoding. Aquí te enseñaremos todo lo que deseas saber sobre los primeros pasos en programación, cómo crear tu primer programa y cómo adquirir tu primer empleo en en área, en donde la oferta es constante y los salarios excelentes. ¡Aprovecha la oportunidad de seguir creciendo laboralmente!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.