
On 2008 Aug 27, at 12:12, Jonathan Cast wrote:
* I wonder why that name was chosen? The design doesn't seem to have anything to do with IO, it's more of a `we have this in C so we want it in Haskell too' monad.
As I understand it, "IO" means "anything not encompassed by equationally-reasoned visible program state". This includes randomness (the IO-based aspect of which requires process or OS state). This also encompasses mutable state (e.g. IORefs), since mutability doesn't fit with equational reasoning. So the name is perhaps poorly chosen, because it only encompasses the most common visible application. (And IORefs particularly so, since they're only so named by analogy with STRefs.) -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH