This would be an excellent thread for the Haskell Cafe mailing list, [EMAIL PROTECTED]
However, it's becoming over-long for the main list http://haskell.org/haskellwiki/Mailing_lists#Mailing_lists_in_detail Thanks! Simon | -----Original Message----- | From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On | Behalf Of Brandon S. Allbery KF8NH | Sent: 28 October 2008 00:38 | To: Rodney D Price | Cc: [email protected] | Subject: Re: [Haskell] IORef sharing | | On 2008 Oct 27, at 20:25, Rodney D Price wrote: | > Okay... However, when I use IO in a Haskell program, | > the response is usually pretty snappy. It's not as | > if the Haskell runtime is hanging around, waiting for | > some time in the future when it might be appropriate | > to do IO. It happens right now. Yet the literature | > gives the impression that the IO monad in particular | > is a clever trick to preserve referential transparency | > by gathering up all the IO actions, but not necessarily | > actually *performing* them. Then the Haskell runtime | > holds its nose and *performs* them when necessary.0 | | The *conceptual* model for the IO monad is that "main" returns a big | IO action which is then evaluated by the Haskell runtime. | | As a practical matter, this usually behaves the same as if <- actually | did evaluation. (It doesn't. It binds monadic expressions together, | and is a convenient way to use the (>>=) operator.) The one | difference is its interaction with Haskell equations (a = b); since | those are more or less macro definitions, assigning e.g. an expression | of type IO String to such a "macro" will cause the expression to be | substituted wherever the "macro" is used. | | IO is a very atypical monad, by the way. Someone pointed you earlier | to the "IO Inside" page, which describes the internal tricks that make | IO work. I prefer to think of IO actions as partially applied | functions, with the missing argument being a "RealWorld" that is | hidden inside the IO monad. (think: IO a = State RealWorld a. This | isn't quite correct because the state also has IORefs inside it.) | | -- | brandon s. allbery [solaris,freebsd,perl,pugs,haskell] [EMAIL PROTECTED] | system administrator [openafs,heimdal,too many hats] [EMAIL PROTECTED] | electrical and computer engineering, carnegie mellon university KF8NH | | | _______________________________________________ | Haskell mailing list | [email protected] | http://www.haskell.org/mailman/listinfo/haskell _______________________________________________ Haskell mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell
