
On 2008 Sep 6, at 6:04, C.M.Brown wrote:
On Sat, 6 Sep 2008, Nicolas Pouillard wrote:
Excerpts from C.M.Brown's message of Fri Sep 05 22:12:05 +0200 2008:
Can you give an example? I don't see how that can be done using Control.Monad.State(.Strict).State, unless invocations of put or modify are considered side effects.
Actually, yes, sorry; I do see your point. I guess it's just IO then.
Technically, even the IO monad is pure, that's just the runtime- system that consume your 'main' function that perform effects (and unsafeP...).
But, sure the IO monad does have side-effects? I'm confused as to how it could be pure. Could you explain?
Technically (in GHC at least) the IO monad builds a pure chain of function applications and returns it from main, which then implicitly passes it to an otherwise inacccessible runIO. Laziness makes this indistinguishable in practice from making effectful calls. -- 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