Actegorías: la base categórica de las ópticas en programación

Fuentes: Actegories

Las actegorías son una construcción de la teoría de categorías que permite que una categoría soporte la acción de una categoría monoidal, multiplicando o escalando sus objetos. En programación, ocupan un papel central en las llamadas ópticas (lentes, prismas, traversals), ya que estas se modelan como acciones de categorías monoidales sobre otras categorías.

El artículo parte de la definición de categoría monoidal, un entorno con un producto tensorial asociativo y unitario definido hasta isomorfismo. A partir de ahí se introduce la actegoría como una categoría dotada de un functor de acción que satisface condiciones de coherencia respecto al producto tensorial y su unidad. Se presentan además los functores monoidales, morfismos entre actegorías que preservan la acción y forman una bicategoría.

El texto traduce estos conceptos a Haskell: se modela la categoría monoidal mediante una clase parametrizada por un Bifunctor (el tensor) y un Constraint (los objetos), junto con tipos asociados para la unidad, y funciones para el asociador y los unitores. La acción se codifica como otro Bifunctor con condiciones de coherencia. Como ejemplos, se usan los productos cartesianos y la suma Either como tensores, y se muestra cómo un Traversable define un functor monoidal no trivial entre actegorías sobre Monoid. El código completo está disponible en un repositorio.