
25 Jan
2005
25 Jan
'05
4:30 a.m.
Am Dienstag, 25. Januar 2005 03:25 schrieb Jan-Willem Maessen:
I feel obliged to point out (because the repeated references to the question are driving me up the wall) that this simple equality holds in every monad:
return 4 >> return 5
=== (definition of >>)
return 4 >>= \_ -> return 5
=== (monad laws)
(\_ -> return 5) 4
=== (beta reduction)
return 5
We don't need to know anything about the semantics, etc. of any other actions the monad might happen to define.
-Jan-Willem Maessen
Thanks, nice to be taken back down to earth. So we have putStrLn "hello" >> mzero === putStrLn "hello" >>= (\_ -> mzero) === (\_ -> mzero) () === mzero indeed. Daniel