
Excerpts from Tom Ellis's message of Sat Mar 09 00:34:41 -0800 2013:
I've never looked at evaluate before but I've just found it's haddock and given it some thought.
http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-Exc...
Since it is asserted that
evaluate x = (return $! x) >>= return
is it right to say (on an informal level at least) that evaluating an IO action to WHNF means evaluating it to the outermost >>= or return?
Sure. Prelude> let x = undefined :: IO a Prelude> x `seq` () *** Exception: Prelude.undefined Prelude> (x >>= undefined) `seq` () ()
For non-IO monads, since everything is imprecise anyway, it doesn't matter.
Could you explain what you mean by "imprecise"?
Imprecise as in imprecise exceptions, http://research.microsoft.com/en-us/um/people/simonpj/papers/imprecise-exn.h... Edward