¿Qué significa que RACStream representa una mónada?

¿Desde el documento RACStream representa una "Mónada"? ¿Alguien podría explicar lo que esto significa específicamente en el context de RACStream? Miré el significado funcional en wiki pero estoy teniendo dificultades para ver cómo beneficia a Reactivo-Cacao y por qué se eligió este patrón.

En el context de Objective-C, el hecho de que RACStream sea ​​una mónada básicamente significa que sigue un patrón. En este caso, RACStream tiene el método -bind: que es una versión más "sin -flattenMap: " de los más utilizados -flattenMap: y estos methods son esencialmente lo que hace que RACStream sea ​​una mónada.

( -flattenMap: la documentation de -flattenMap: para get más información sobre su uso).

Dado un bloque B que toma un valor y devuelve un RACStream (es decir, un bloque que asigna valores a las transmisiones), y se le asigna una transmisión A , llamar a [A flattenMap:B] dará como resultado una transmisión "agregada" que incluye todos los valores de el set colectivo de flujos devueltos por el bloque B (que se invoca para cada valor en A ). (EDITAR: esta explicación limitada no describe el momento de los valores en la secuencia resultante ni la propagación de errores. Si tiene preguntas sobre estos, me complace responderlos).

Se pueden encontrar algunos ejemplos en la documentation de Basic Operators de ReactiveCocoa.

En cuanto a los beneficios, creo que el hecho de que las transmisiones son mónadas es en su mayoría solo beneficioso para aquellos que tienen experiencia con mónadas. Por otro lado, las mónadas apenas se mencionan en la documentation y, lo que es más importante, ReactiveCocoa no requiere ningún conocimiento de las mónadas en absoluto, por lo que no hay inconveniente en no ser mónadas familiares.

    Intereting Posts