2012-03-16 25 views
20

Recientemente he intentado encontrar una buena fuente sobre la diferencia entre mónadas y monoides.monoid vs mónada en Scala

¿Podría alguien proporcionar un enlace a un buen recurso sobre esto o tal vez tómate un tiempo para explicar las similitudes/diferencias?

+3

Hay tanto contenido sobre mónadas y monoides que supongo que todo el mundo tiene su propia "buena fuente". Mi tríada es: esta [ASUNTA pregunta] (http://stackoverflow.com/questions/3870088/a-monad-is-just-a-monoid-in-the-category-of-endofunctors-whats-the-problem) [Las mónadas no son metáforas] (http://www.codecommit.com/blog/ruby/monads-are-not-metaphors) de Daniel Spiewak y [Monads are Dominoes] (http://apocalisp.wordpress.com/ 2011/07/01/mónadas-son-dominó /) por Rúnar Óli – blouerat

+0

En teoría de categorías "Para cualquier categoría C, la categoría [C, C] de sus endofunctors tiene una estructura monoidal inducida por la composición. Un objeto monoide en [ C, C] es una mónada en C. " - de https://en.wikipedia.org/wiki/Monoid_%28category_theory%29. Consulte https://en.wikipedia.org/wiki/Monad_%28category_theory%29 para la definición de mónada en la teoría de categorías. –

Respuesta

26

Monads are monoids in the category of endofunctors. Por lo tanto, una mónada es solo un ejemplo de monoide, que es un concepto más general.

Y, a pesar de que podría ser técnicamente cierto, la respuesta más sencilla es que las mónadas y monoides son realmente nada que ver entre sí, y que no deberían estar tratando de aprender la diferencia entre ellos, pero sólo aprenden ellos. Hay toneladas de material al respecto en Internet, fácilmente en Google.

+4

Me sorprende (y me intimida) cómo matemáticamente las ideas relativamente relacionadas pueden llegar a ser radicalmente diferentes en todos los términos prácticos cuando se aplican a los lenguajes de programación. –

+1

Esta respuesta en otra pregunta de la wiki de la comunidad es una de las mejores y más concisas http://stackoverflow.com/a/7829607/541202 – Traveler

+0

Más precisamente "Para cualquier categoría C, la categoría [C, C] de sus endofunctors tiene una estructura monoidal inducida por la composición. Un objeto monoide en [C, C] es una mónada en C. " - de https://en.wikipedia.org/wiki/Monoid_%28category_theory%29. Consulte https://en.wikipedia.org/wiki/Monad_%28category_theory%29 para la definición de mónada en la teoría de categorías. –