[Haskell-cafe] evaluation semantics of bind
rendel at cs.au.dk
Mon Feb 9 12:06:44 EST 2009
Gregg Reynolds wrote::
> My original question was motivated by the observation that a human reader of
> an expression of the form "e >>= f" , on seeing that f is constant, may pull
> the constant value out of f, disregard e and dispense with the application f
While a human reader may well do that, but it would be correct or wrong
depending on the definition of >>=. The same is of course true for
compilers. By the way, there is no "application f e".
An example where it would be wrong to ignore e:
sum ([1, 2] >>= const )
This expression should evaluate to sum [21, 21] = 42, not sum  = 21.
There is nothing special with IO or >>=, so there is no need to
introduce special cases for IO or >>= in a formal or informal semantics
More information about the Haskell-Cafe