[Haskell-cafe] Monad laws

Luke Palmer lrpalmer at gmail.com
Tue Mar 2 19:02:13 EST 2010

On Tue, Mar 2, 2010 at 4:37 PM, Yitzchak Gale <gale at sefer.org> wrote:
> For this reason, I consider it a bug in GHC that return :: IO a
> is lazy.

Wait a minute...

   return undefined >>= const (return 42)
= const (return 42) undefined
= return 42

But if return undefined = undefined, then that equals;

  undefined >>= const (return 42)

Which, if IO is allowed to have effects (i.e. if putStrLn "Hello,
World" >>= const (return 42)  is to be different than return 42), must
be undefined.

Or does the former not hold in your version of the laws with strict composition?


More information about the Haskell-Cafe mailing list