¿Qué importancia tiene, si es que lo es, la teoría de grupos y el álgebra abstracta para comprender la programación funcional?

Debo prefacio esto con la afirmación de que es bueno para entender la teoría de tipos, pero también por otras razones. Sin embargo, si no está interesado en escribir bien, entonces no será tan interesante para usted.

Diría que es beneficioso comprender el álgebra abstracta, pero más específicamente, comprender los monoides, si va a programar. La razón es que las funciones puras son monoides sobre la composición. Si trabaja con funciones invertibles, las funciones invertibles son monoides sobre composición.

Si entras en la teoría de la categoría, aprenderás muchas cosas que unen todo:

  • Los booleanos son uniones disjuntas con su propio álgebra.
  • El tipo de unidad es un objeto terminal y el fondo es un objeto inicial, y reemplaza la noción de vacío y “excepción”. Estos son su 0 (identidad aditiva) y 1 (identidad multiplicativa) en tipos.
  • Hay un álgebra para trabajar con tipos, en el que hay una suma (unión disjunta) y un producto (tupla). Eso significa que los booleanos son un álgebra creada por otro álgebra, llamada álgebra de tipos.
  • También hay exponenciales (funciones) y derivados (más difíciles de describir, pero pueden relacionar tipos entre sí).

Todo esto se debe a la comprensión de qué es un álgebra, o un grupo, o monoide, etc.

Ni la teoría de grupo ni el álgebra abstracta son relevantes para comprender la programación funcional. He enseñado LISP durante 35–40 años, y los estudiantes con experiencia en lenguajes de procedimiento tienen la mayor dificultad, mientras que los estudiantes con una amplia comprensión de las matemáticas debajo del Álgebra abstracta tienen la menor dificultad.

More Interesting

Cómo imprimir el siguiente patrón en Java

Si alguna variable es el máximo de tres variables aleatorias independientes distribuidas idénticamente, ¿cómo encontraríamos la distribución de esta variable?

Dadas N monedas, colocadas en una fila, indexadas 1 a N de izquierda a derecha. Inicialmente todas las monedas muestran cabeza. En cada turno, dos enteros, no necesariamente distintos, A y B entre 1 y N (inclusive) se eligen de manera uniforme al azar. Todas las monedas con un índice de A a B (inclusive) se voltean. ¿Cuál es el número esperado de monedas que muestran la cabeza después de que M gira?

¿Ser bueno en matemáticas ayuda en la programación?

¿La operación Bitwise es importante en Python? Estoy aprendiendo esta parte en Codecademy y no entendí totalmente. ¿Qué es Base 2 y Base 10?

¿Cuál es el orden correcto para tomar cursos en línea sobre algoritmos (del MIT y Stanford) para un estudiante interesado en aspectos teóricos y teoría de la complejidad?

¿Puede un niño menor de 14 años que es malo en matemáticas aprender a programar juegos?

¿Han publicado algunos expertos impresiones iniciales del artículo de ArXiv que afirman NP = PSPACE?

¿Cómo funcionan los ajustes del algoritmo del generador de sueños?

¿Cómo se puede determinar la coincidencia más cercana de un vector dado entre un conjunto de vectores si el origen de los vectores también es importante?

Cómo convertir -57.45 a doble precisión IEEE

¿Cuántos arreglos de piezas de ajedrez en un tablero de ajedrez hay, suponiendo que las piezas lleguen a sus posiciones mediante movimientos legales?

Cómo comenzar a hacer aprendizaje automático para un análisis de datos simple

¿Cómo escribiría una función que encuentre la entrada máxima n tal que f (n) <c en el tiempo O (lg n)?

¿Qué tan difíciles son las funciones de una variable compleja?