La IO
monade di Haskell è spesso spiegata come una monade di stato in cui lo stato è il mondo. Quindi un valore di tipo IO a
monade è visto come qualcosa di simile worldState -> (a, worldState)
.
Qualche tempo fa ho letto un articolo (o un blog / post di una mailing list) che ha criticato questo punto di vista e ha fornito diversi motivi per cui non è corretto. Ma non ricordo né l'articolo né i motivi. Qualcuno lo sa?
Modifica: l'articolo sembra perso, quindi iniziamo a raccogliere vari argomenti qui. Sto iniziando una taglia per rendere le cose più interessanti.
Modifica: L'articolo che stavo cercando è Affrontare la squadra imbarazzante: input / output monadici, concorrenza, eccezioni e chiamate in lingua straniera in Haskell di Simon Peyton Jones. (Grazie alla risposta di TacTics.)