La IO
mónada en Haskell a menudo se explica como una mónada estatal donde el estado es el mundo. Entonces, un valor de tipo IO a
mónada se ve como algo así worldState -> (a, worldState)
.
Hace algún tiempo leí un artículo (o una publicación de blog / lista de correo) que criticaba esta opinión y daba varias razones por las que no es correcta. Pero no puedo recordar ni el artículo ni las razones. ¿Cualquiera sabe?
Editar: El artículo parece perdido, así que comencemos a reunir varios argumentos aquí. Estoy comenzando una recompensa para hacer las cosas más interesantes.
Editar: El artículo que estaba buscando es Abordar el equipo incómodo: entrada / salida monádica, concurrencia, excepciones y llamadas en idioma extranjero en Haskell por Simon Peyton Jones. (Gracias a la respuesta de TacTics).