Estoy de acuerdo con algo de lo goblin dice. También estoy en desacuerdo con un par de cosas. Las principales son 1) la sugerencia implícita de que cómo utilizan los programadores mónadas como se va a mirar cómo los matemáticos uso de ellos, y 2) que las mónadas se utilizan para "expresar estructuras de datos". Muchos "nociones de cálculo" no se corresponden con el significado coloquial de "estructura de datos", e incluso los que dudo que muchos describen como "expresada" por mónadas, a menos que de pasar a ser algo como una mónada. Estoy de acuerdo con Ian comentario que mucho de la importancia de las mónadas a los matemáticos tiene que ver con su relación con adjoint functors. Yo creo que el goblin se va a ir en una dirección buena hablando de álgebra universal, y es probablemente similar a lo que yo voy a hablar. Espero que vaya en explícito detalles concretos.
Estoy en su mayoría no vamos a hablar de cómo surgió históricamente, pero brevemente, que se definieron por primera vez por Roger Godement , en 1958, en un artículo sobre la gavilla de la teoría en el contexto de la Topología Algebraica. Suena como que, en realidad, él introdujo la noción de un comónada como contraposición a una mónada, y él utiliza el término "norma de construcción". Estoy completamente de adivinanzas aquí ya que no tengo acceso al artículo, pero tengo la sospecha de que él era la definición de un comonad para organizar la degeneración y la cara de los mapas de un complejo simplicial o similar. Me encantaría si alguien puede comprobar o corregir esta en los comentarios. La idea de lo que estoy pensando que puede ser (demasiado) de forma compacta describe de la siguiente manera: La aumentada simplex categoría, $\Delta_+$, puede ser caracterizada como la libre categoría monoidal con un monoid objeto. Un (aumentada) simplicial objeto en una categoría $\mathcal{C}$ es un functor $\Delta_+^{op} \to \mathcal{C}$. El universal propiedad de $\Delta_+$ significa un monoidal functor de cualquier (monoidal) categoría es la misma cosa como una monoid objeto en esa categoría. Usted probablemente ha oído hablar de las mónadas se describe como "monoid objetos en la categoría de endofunctors", y, efectivamente, una mónada en una categoría $\mathcal{C}$ es equivalente a un monoidal functor $\Delta_+ \to [\mathcal{C},\mathcal{C}]$. Un comonad es un functor $\Delta_+^{op} \to [\mathcal{C},\mathcal{C}]$. El resultado de esto es que cada comonad en una categoría $\mathcal{C}$ da lugar a un objeto simplicial en $\mathcal{C}$ (a pesar de que no todos los simplicial objeto surge de esta manera).
Si usted salir y mirar cómo las mónadas son utilizados por categorists, usted probablemente encontrará que no se parece nada a cómo las mónadas se utilizan, por ejemplo, en Haskell. Algunos de los que es porque están siendo utilizados para diferentes cosas; muy de vez en cuando es sólo diferencias en la presentación. Quiero referirme a un aspecto que es bastante diferencia concreta, se pone de relieve algunas de las diferencias de énfasis entre los matemáticos y programadores, y es uno de los más importantes e impresionantes ejemplos de la teoría de la mónada.
Como ha sido mencionado, y como usted probablemente sabe, las mónadas están relacionados con adjunctions. Dado cualquier contigüidad $F \dashv U$, obtenemos una monada $T = UF$ (y un comonad $G = FU$). Una pregunta natural es: ¿podemos obtener una contigüidad dado una monada? La respuesta es "sí, de muchas maneras" y hay dos, no necesariamente distintos, extrema enfoques. Existe un método que utiliza la Kleisli categoría que usted probablemente ha oído hablar de antes. El otro enfoque utiliza la Eilenberg-Moore categoría.
Un objeto de la Eilenberg-Moore categoría para una monada, $T$, es llamado un $T$-álgebra y consta de un par de un objeto $A$ y una flecha $e : TA \to A$ que satisface un montón de leyes que son de importancia para nosotros. Ahora resulta que el Kleisli categoría es equivalente a la subcategoría de Eilenberg-Moore categoría que consta de objetos de $\mu_A : T^2 A \to TA$ donde $\mu : T^2 \to T$ es la monádica de la multiplicación, es decir, join
en Haskell. Para la concreción y porque es un simple y relevante ejemplo, vamos a configurar $T$ a ser el libre monoid mónada, es decir, la lista mónada. Voy a utilizar la sintaxis de Haskell, por lo $TA = [A]$. Ahora, resulta que el álgebra, $e$, da lugar a una monoid estructura en $A$ través $a*b \equiv e([a,b])$$1 \equiv e([])$. El $T$-álgebra leyes implica la monoid leyes. Por lo tanto, cada $T$-álgebra es en realidad un monoid, y es inmediato a partir de la definición de "libre monoid" que cada monoid da lugar a una $T$-álgebra. En otras palabras, la categoría de monoids es equivalente a la categoría de $T$-álgebras de donde $T$ es el libre monoid mónada. En general, si existe una contigüidad $F \dashv U : \mathcal{D} \to \mathcal{C}$ que conduce a esta situación, podemos decir que $\mathcal{D}$ es monádico $\mathcal{C}$. En nuestro caso, $U : \mathbf{Mon} \to \mathbf{Set}$, el conjunto subyacente functor, lleva a la categoría de monoids ser monádico $\mathbf{Set}$. Ahora, cuando esto se pone interesante es que esto funciona para cualquier categoría de estructuras algebraicas, por ejemplo, anillos, grupos, redes, álgebras. Ahora el estudio general de monádico categorías puede dar los resultados que se aplican a todas las estructuras algebraicas. Es realmente mejor que eso. Cada monádico ($\mathbf{Set}$ al menos) categoría es "algebraica" en un poco más de sentido general que la definición tradicional. Esto conduce a la algebraica de las presentaciones de las cosas que pueden no ser, obviamente, algebraicas, por ejemplo, compacto Hausdorff espacios topológicos.
Debe ser razonablemente claro que el Kleisli categoría, en nuestro ejemplo, corresponde a la subcategoría de libre monoids. Los programadores tienden a centrarse en las estructuras algebraicas con lawless presentaciones (que son necesariamente gratis). La mayoría de los tipos de datos algebraicos (polinomio) corresponden a lawless algebraicas teorías. (Los que no no corresponden a teorías algebraicas para la mayoría razones técnicas.) La mayoría de las estructuras algebraicas matemáticos interesan son sin ley, o incluso gratis. Finito dimensionales espacios vectoriales son todos gratuitos, y, efectivamente, están bien estudiados por los programadores.