27 votes

Que sont Eff et Aff ?

Quelle est la relation entre les types Purescript Eff et Aff ? Est-il possible d'effectuer une conversion entre les deux ?

Je débute avec Purescript en venant d'Haskell, et il semble que les deux types remplissent à peu près le rôle que le IO a en Haskell. Est-ce juste de dire ça ?

40voto

Phil Freeman Points 3644

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).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X