Las funciones lambda son funciones anónimas. Se usan cuando, o bien necesitas una función que sólo vas a usar en un sitio, o quieres devolver una función como resultado de otra.
En cuanto a las mónadas, aparte de ser un concepto matemático raro, es el sistema que usa Haskell para encadenar computaciones (es decir, funciones con una entrada y una salida). Imagina que tienes el siguiente proceso:
+-----+ +-----+ +-----+ x --->| F |--->| G |--->| H |---> y +-----+ +-----+ +-----+
Hay que tener en cuenta que mientras que la ejecución de un lenguaje imperativo es ordenada, la de un lenguaje funcional puro no tiene porqué serlo. Las mónadas sirven para forzar una ejecución lineal, pero además, permiten modificar la manera en la que se encadenan las acciones. Por ejemplo, ¿qué pasa si alguna función devuelve un resultado incorrecto? En un lenguaje imperativo, tendrías que comprobarlo manualmente para cada función (muy pesado), o modificar el compilador para que lo haga por tí (muy difícil). En Haskell, simplemente tienes que modificar la mónada correspondiente. Eso permite a Haskell cosas tan increíbles como poder implementar manejo de excepciones o nuevas estructuras de control mediante funciones.
En fin, si te interesa más el tema, puedes leer http://www.nomaware.com/monads/html, en el que se explica todo muy claramente.
Pues sí, siempre me ha parecido un poco cutre que aparezca un comentario y no su padre. Por eso tengo puesto el umbral de lectura a -1. A tu propuesta, yo añadiría una más: que si un comentario recibe un -1, no se muestren sus hijos.
Re:No sólo en investigación
(Puntos:5, Informativo)( http://barrapunto.com/ | Última bitácora: Viernes, 17 Noviembre de 2006, 23:39h )
En cuanto a las mónadas, aparte de ser un concepto matemático raro, es el sistema que usa Haskell para encadenar computaciones (es decir, funciones con una entrada y una salida). Imagina que tienes el siguiente proceso:
+-----+ +-----+ +-----+
x --->| F |--->| G |--->| H |---> y
+-----+ +-----+ +-----+
Hay que tener en cuenta que mientras que la ejecución de un lenguaje imperativo es ordenada, la de un lenguaje funcional puro no tiene porqué serlo. Las mónadas sirven para forzar una ejecución lineal, pero además, permiten modificar la manera en la que se encadenan las acciones. Por ejemplo, ¿qué pasa si alguna función devuelve un resultado incorrecto? En un lenguaje imperativo, tendrías que comprobarlo manualmente para cada función (muy pesado), o modificar el compilador para que lo haga por tí (muy difícil). En Haskell, simplemente tienes que modificar la mónada correspondiente. Eso permite a Haskell cosas tan increíbles como poder implementar manejo de excepciones o nuevas estructuras de control mediante funciones.
En fin, si te interesa más el tema, puedes leer http://www.nomaware.com/monads/html, en el que se explica todo muy claramente.
Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn!
+1 Informativo
(Puntos:1)( http://barrapunto.com/ | Última bitácora: Lunes, 22 Octubre de 2007, 17:54h )
Re:No sólo en investigación
(Puntos:1)( http://barrapunto.com/ | Última bitácora: Viernes, 17 Noviembre de 2006, 23:39h )
Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn!