La IO
monade à Haskell est souvent décrite comme une monade d’État où l’État est le monde. Ainsi, une valeur de type IO a
monad est considérée comme quelque chose comme worldState -> (a, worldState)
.
Il y a quelque temps, j'ai lu un article (ou un article de blog / liste de diffusion) qui critiquait ce point de vue et donnait plusieurs raisons pour expliquer que ce n'était pas correct. Mais je ne me souviens ni de l'article ni des raisons. Quelqu'un sait?
Edit: L'article semble perdu, commençons donc à rassembler divers arguments ici. Je commence une prime pour rendre les choses plus intéressantes.
Edit: L’article que je cherchais s’attaque au groupe délicat: entrées / sorties monadiques, accès simultanés, exceptions et appels en langue étrangère dans Haskell de Simon Peyton Jones. (Merci à la réponse de TacTics.)