71 votos

Relacionar la teoría de las categorías con la teoría de los lenguajes de programación

Me pregunto cuál es la relación de la teoría de las categorías con la teoría del lenguaje de programación.

He estado leyendo algunos libros sobre la teoría de las categorías y la teoría de los topos, pero si por casualidad alguien sabe cuáles son las conexiones y pudiera decírmelo sería muy útil, ya que eso me daría motivos para continuar con este empeño con fuerza, y saber dónde buscar.

Motivación: Actualmente estoy investigando sobre la educación matemática de pregrado/graduado, específicamente la enseñanza de la programación a los graduados/graduados en matemáticas. Estoy jugando con la idea de que si toco los puntos fuertes de los matemáticos puedo instruirlos mejor en la programación y serán mejores programadores, y lo que aprendan les será útil. Estoy en el proceso (muy temprano) de escribir un libro de texto sobre el tema.

1 votos

Esto es muy similar a otra pregunta sobre la teoría de categorías y los lenguajes de programación, pero la cambié para reflejar que quería saber algunas conexiones precisas, en lugar de simplemente dónde buscar.

1 votos

Los topos están en una especie de "rama" diferente a la de los lenguajes de programación. Su ancestro menos común sería probablemente las hiperdoctrinas de Lawvere o simplemente las categorías cerradas cartesianas. No se trata de desalentar el aprendizaje de los topoi (¡son fascinantes!), pero no juegan un papel importante en los lenguajes de programación.

4 votos

Además, francamente, creo que los estudiantes de ciencias de la computación estarían mucho mejor si los arrastráramos a través de un semestre de teoría de conjuntos primero. Facilitaría muchas otras cosas; podríamos hablar de "conjuntos recursivos de números naturales" en lugar de problemas decidibles. Pero no creo que se pueda meter suficiente teoría de categorías en la cabeza de un estudiante de grado (incluso de un estudiante de matemáticas) a tiempo para generar un rendimiento significativo de la inversión en términos de comprensión de PL.

10voto

saschabeaumont Puntos 2632

Las conexiones que he visto son en el área de la semántica denotacional y la teoría de tipos. Por ejemplo, los objetos pueden ser los tipos Entero, Lista(Entero), Entero+Lista(Lista(Entero)), etc. Las funciones (en el lenguaje) son flechas entre los objetos. (Así, la función sucesora es una flecha de Entero a Entero.) Entonces las construcciones categóricas se traducen en construcciones del lenguaje de programación ("Lista" es un endofuntor, por ejemplo). La existencia de funciones recursivas está garantizada por ciertas propiedades categóricas de la categoría, etc.

10voto

Mark Davidson Puntos 350

Si quieres ensuciarte las manos, busca en el lenguaje de programación Haskell, que tiene funtores y transformaciones naturales.

Los funtores implementan la estructura. Por ejemplo, considere la categoría de tipos T y un functor L que envía un tipo t al tipo L(t), listas de t. Esto es algo similar al functor sobre Set que envía un conjunto X al conjunto de todas las listas finitas sobre el conjunto X (es decir, el conjunto subyacente del monoide libre sobre X). También se podría considerar un functor B que envía un tipo t al tipo B(t) de un árbol binario sobre t.

Ahora se puede definir una transformación natural de B(t) a L(t) como flatten, que toma un árbol binario y lo aplana a una lista. Así como los funtores implementan la estructura, las transformaciones naturales alteran la estructura.

La cosa se pone interesante cuando se introducen las mónadas. Usando el functor de lista anterior, piensa en L(L(t)), listas de listas. Puedes concatenar una lista de listas en una sola lista, lo que corresponde al mapa de mónadas L(L(t)) a L(t).

Mira esto lien para más.

6voto

Bob Nadler Puntos 1959

Puede disfrutar de El álgebra de la alegría que "da varios análogos de conceptos de la teoría de categorías".

5voto

none Puntos 21

Si quieres una descripción muy básica, de nivel de entrada, de la teoría de categorías desde el punto de vista de la programación Haskell (no es exactamente lo que el OP pidió),

es agradable.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X