react purescript

purescript - react - ¿Qué son Eff y Aff?



purescript wikipedia (1)

¿Cuál es la relación entre los tipos de Purescript Eff y Aff ? ¿Es posible convertir entre ellos?

Estoy empezando con Purescript proveniente de Haskell, y parece que ambos tipos cumplen el rol que IO tiene en Haskell. ¿Es justo decir eso?


Eff es una mónada de efecto síncrono. Se utiliza para secuenciar un código JavaScript extraño y efectivo, como la generación de números aleatorios, la lectura y escritura de valores mutables, la escritura en la consola y las excepciones de lanzamiento y captura.

Aff es una mónada de efecto asíncrono. Puede manejar y secuenciar códigos asíncronos efectivos, como solicitudes AJAX, tiempos de espera y IO de red y archivos. También puede realizar efectos sincrónicos usando liftEff . Y también proporciona un buen mecanismo para el manejo de errores.

Es posible convertir de Eff a Aff usando liftEff (todo lo que no se liftEff es una instancia de algo que se permite hacer una pausa), pero la otra dirección no es posible en general. Aff acciones de Aff se pueden ejecutar en un contexto Eff proporcionando una devolución de llamada.

La IO de Haskell es similar a ambas, pero más cercana a Aff que a Eff que las acciones de IO pueden representar cosas asíncronas (vea threadDelay por ejemplo).