Comment la construction de la monade aide-t-elle à maintenir la pureté (à Haskell) tout en faisant des choses impures? Quand par exemple vous donnez print "Hello"
exécutez-vous du code pur ou impur? C'est un détail très subtil mais quelque chose qui aide à mieux comprendre l'idée de pureté et d'impureté dans les langages fonctionnels.L'impureté monadique et la pureté de Haskell. Comment sont-ils combinés?
Répondre
L'expression
print "Hello"
est en effet pur. Comme il n'imprime rien, mais construit plutôt quelque chose qui, lorsqu'il est exécuté, affiche "Hello".
Voici une analogie:
Un moine écrit sur une feuille de papier:
Go to a bordell and do filthy things with the prostitutes there.
Peut-on accuser le moine à cause d'adultère, simplement parce qu'il a écrit une instruction de se livrer à l'adultère?
Le monde réel Haskell en effet. +1 –
Oui on peut l'accuser. – Dragno
La question stackoverflow peut répondre à votre question: In what sense is the IO Monad pure?
En bref, monade lui-même est pur , mais il peut donner des instructions impures. Pour être un peu plus précis, les monades peuvent être considérées comme une série de descriptions de calcul composables. Certains de ces calculs peuvent être sales (c'est-à-dire avoir un effet secondaire), mais la description elle-même est totalement pure et propre.
- 1. Haskell: comment écrire une fonction variadique monadique, avec des paramètres utilisant le contexte monadique
- 2. Ajout Monadique Bind opérateur de Haskell à Scala
- 3. La conversion d'une fonction monadique à une fonction IO monadique
- 4. PRISM et Caliburn combinés
- 5. Smaato et iAds combinés
- 6. Comment marcher à travers les éléments d'un arbre avec une fonction monadique Haskell?
- 7. Comment profiler python et c code combinés
- 8. CSS3 Dégradés et transparence combinés?
- 9. phpmailer, requre() et include_path combinés
- 10. Simplifier cette expression monadique
- 11. Apache Rewrite et Alias combinés
- 12. Concevoir un type monadique
- 13. cas sur valeur monadique
- 14. éléments div combinés combinés avec jQuery
- 15. Qu'est-ce que "la réflexion monadique"?
- 16. Verilog bitwise ou ("|") monadique
- 17. XSLT, comment chercher et les éléments de sortie combinés
- 18. sortie Lazy d'une action monadique
- 19. Possibilité d'utiliser aspNetActiveDirectoryProvider et aspsqlProfile Provider combinés?
- 20. Sencha Touch Remote et stockage local combinés
- 21. Substitution monadique sous les classeurs
- 22. itérer monadique sur une Data.Sequence
- 23. C++ compiler les contrôles de pureté de temps?
- 24. cloudsql et datastore combinés avec django
- 25. Déréférencement et décrémentation combinés en C
- 26. Interface et Baseclass peuvent être combinés ensemble?
- 27. Haskell et la fonction d'appel.
- 28. Champs combinés dans Rails
- 29. Format.js et render json combinés dans Rails?
- 30. Gowalla, Foursquare et Facebook Places API combinés
[Vous pouvez jeter un oeil à ma réponse à ce sujet] (http://stackoverflow.com/questions/14201994/keep-variable-inside-another-function-in-haskell/14206044#14206044) mai que cela puisse t'aider. – zurgl