Estoy un poco confundido leyendo la definición entre los dos. ¿Pueden cruzarse en términos de definición? o estoy completamente perdido? Gracias.¿Cuál es la diferencia entre una mónada y un cierre?
Respuesta
Los cierres, como la palabra tiende a usarse, son solo funciones (o bloques de código, si quieres)) que puede tratar como una pieza de datos y pasar a otras funciones, etc. (el bit "cerrado" es que siempre que lo llame, se comporta exactamente como lo haría si lo llamara donde se definió originalmente). Una mónada es (más o menos) más como un contexto en el que las funciones se pueden encadenar juntas de forma secuencial y controla cómo se pasan los datos de una función a la siguiente.
Son bastante diferentes, aunque las mónadas a menudo usan cierres para capturar la lógica.
Personalmente, trataría de ser sólido en la definición de cierres (esencialmente una parte de la lógica que también captura su entorno, es decir, variables locales, etc.) antes de preocuparme por las mónadas. Pueden venir más tarde :)
Existen varias preguntas sobre los cierres en Stack Overflow: el mejor para ayudarlo dependerá de la plataforma en la que esté trabajando. Por ejemplo, hay:
Personalmente estoy más que empezar a "asimilar" mónadas (gracias al libro que estoy ayudando en). Algún día me ocuparé de escribir un artículo sobre ellos, cuando sienta que los entiendo lo suficientemente bien :)
Jon- Me gusta mucho esta parte de tu respuesta- "Algún día me pondré a escribir un artículo sobre ellos, cuando sienta que los entiendo lo suficientemente bien :)" ¡Sigue así! ¡La mejor de las suertes! –
Un "cierre" es un objeto que comprende 1) una función, y 2) los valores de sus variables libres donde está construido.
A "mónada" es una clase de funciones que pueden estar compuestos de una manera determinada, es decir, mediante el uso asociado bind y retorno función de los operadores de orden superior, para producir otras funciones.
Creo que las mónadas son un poco más complicadas que los cierres porque los cierres son solo bloques de código que recuerdan algo desde el punto de sus definiciones y las mónadas son una construcción para "retorcer" la función de composición de funciones habitual.
- 1. Exactamente ¿cuál es la diferencia entre un "cierre" y un "bloque"?
- 2. ¿Cuál es la diferencia entre un hilo y una fibra?
- 3. ¿Cuál es la diferencia entre un algoritmo y una función?
- 4. ¿Cuál es la diferencia entre una matriz y un objeto?
- 5. ¿Cuál es la diferencia entre una instancia y un objeto?
- 6. ¿Cuál es la diferencia entre un tema y una plantilla?
- 7. ¿Cuál es la diferencia entre un RoutedCommand y una RoutedUICommand?
- 8. ¿Cuál es la diferencia entre un método y una función?
- 9. ¿Cuál es la diferencia entre una heurística y un algoritmo?
- 10. ¿Cuál es la diferencia entre un diccionario y una matriz?
- 11. ¿Cuál es la diferencia entre dict() y {}?
- 12. ¿Cuál es la diferencia entre .ToString (+) y ""
- 13. ¿Cuál es la diferencia entre ".equals" y "=="?
- 14. ¿Cuál es la diferencia entre {0} y ""?
- 15. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 16. Cuál es la diferencia entre = y: =
- 17. ¿Cuál es la diferencia entre una subrutina y una función?
- 18. ¿cuál es la diferencia entre una clase y una biblioteca?
- 19. Cuál es la diferencia entre $ (...) y `...`
- 20. ¿cuál es la diferencia entre:.! y: r !?
- 21. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 22. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 23. ¿Cuál es la diferencia entre + = y = +?
- 24. ¿Cuál es la diferencia entre " " y ""?
- 25. Cuál es la diferencia entre $ y jQuery
- 26. ¿Cuál es la diferencia entre un lenguaje y un marco?
- 27. ¿Cuál es la diferencia entre un ayudante y un parcial?
- 28. ¿Cuál es la diferencia entre una sesión y una cookie?
- 29. ¿Cuál es la diferencia entre una vista y una secuencia?
- 30. ¿Cuál es la diferencia entre un controlador y un servicio?
Esto me ayuda, muchas gracias !!! – user63657
Bueno, esa es una de las mejores descripciones rápidas de las mónadas que he visto. –
+1 - Muy bonito, de hecho. Gracias. – duffymo