Eff
est une monade d'effet synchrone. Elle est utilisée pour séquencer du code JavaScript étranger efficace - des choses comme la génération de nombres aléatoires, la lecture et l'écriture de valeurs mutables, l'écriture dans la console et l'envoi et la réception d'exceptions.
Aff
est une monade d'effet asynchrone. Elle peut gérer et séquencer du code asynchrone efficace, comme les requêtes AJAX, les délais d'attente et les entrées-sorties de réseau et de fichiers. Elle peut également effectuer des effets synchrones en utilisant liftEff
. Et il fournit également un mécanisme agréable pour gérer les erreurs.
Il est possible de convertir de Eff
à Aff
en utilisant liftEff
(tout ce qui ne fait pas de pause est une instance de quelque chose qui est autorisé à faire une pause), mais l'autre direction n'est pas possible en général. Aff
peuvent être exécutées dans une Eff
en fournissant un rappel (callback).
Haskell IO
est similaire aux deux, mais plus proche de Aff
que Eff
en ce que IO
Les actions peuvent représenter des choses asynchrones (voir threadDelay
par exemple).