[Haskell-cafe] A question about "monad laws"

askyle valgarv at gmx.net
Sat Mar 15 12:01:58 EDT 2008

ajb-2 wrote:
> One thing that may help is that if you can prove that fmap is sane:
>      fmap (f . g) = fmap f . fmap g
I get stuck after expanding the rhs into:
((return . f) <=< id) . ((return . g) <=< id)

ajb-2 wrote:
> then the naturality of return is precisely its free theorem, and ditto
> for bind.
Care to develop? IIRC the free theorems have a certain parametericity
requirement (which probably holds in all interesting cases, but still sounds
like an additional assumption). I'm not too familiar with these, so a link
would be appreciated =)

ajb-2 wrote:
> So perhaps this law:
>      (f <=< g) . h === f <=< (g . h)
> is actually the fmap law in disguise?
Could be. Maybe the fmap law is this one in disguise ;)

Ariel J. Birnbaum
View this message in context: http://www.nabble.com/A-question-about-%22monad-laws%22-tp15411587p16069396.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.

More information about the Haskell-Cafe mailing list