On Fri, Mar 08, 2013 at 08:53:15PM -0800, Edward Z. Yang wrote: > Are these equivalent? If not, under what circumstances are they not > equivalent? When should you use each? > > evaluate a >> return b [...] > - Use 'evaluate' when you mean to say, "Evaluate this thunk to HNF > before doing any other IO actions, please." Use it as much as > possible in IO.
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-Exception-Base.html#v:evaluate 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? > For non-IO monads, since everything is imprecise anyway, it doesn't > matter. Could you explain what you mean by "imprecise"? Tom _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe