
Dear List, I am quite new in Haskell's categorical manner of programming. However I have enough knowledge in Category Theory. I want to ask a question, maybe very well-known one by some of you, about monads of Haskell. For the type constructors like Maybe and [], I managed to prove that together with 2 natural transformations (bind + return), both of these triples construct a monad. But when I try to prove that IO and Cont type constructors with the same natural transformations (bind + return) are monads as well, it was failed. Here my question is: Is there anyone who knows how to prove that IO and Cont are monads with satisfing following properties: join . fmap join = join . joinjoin . fmap return = join . return = idreturn . f = fmap f . returnjoin . fmap (fmap f) = fmap f . join Thanks already now, Burak Ekici.

As for Cont, it can be proved easily, either by hand, or by observation that Cont is an obvious composition of two adjoint functors.
As for IO, it has to be taken for granted, since IO internals are hidden from the programmer.
Отправлено с iPhone
Apr 12, 2011, в 14:39, Burak Ekici
Dear List,
I am quite new in Haskell's categorical manner of programming. However I have enough knowledge in Category Theory. I want to ask a question, maybe very well-known one by some of you, about monads of Haskell.
For the type constructors like Maybe and [], I managed to prove that together with 2 natural transformations (bind + return), both of these triples construct a monad. But when I try to prove that IO and Cont type constructors with the same natural transformations (bind + return) are monads as well, it was failed.
Here my question is: Is there anyone who knows how to prove that IO and Cont are monads with satisfing following properties:
join . fmap join = join . join join . fmap return = join . return = id return . f = fmap f . return join . fmap (fmap f) = fmap f . join
Thanks already now, Burak Ekici. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

2011/4/12 Burak Ekici
Dear List,
I am quite new in Haskell's categorical manner of programming. However I have enough knowledge in Category Theory. I want to ask a question, maybe very well-known one by some of you, about monads of Haskell.
For the type constructors like Maybe and [], I managed to prove that together with 2 natural transformations (bind + return), both of these triples construct a monad. But when I try to prove that IO and Cont type constructors with the same natural transformations (bind + return) are monads as well, it was failed.
Here my question is: Is there anyone who knows how to prove that IO and Cont are monads with satisfing following properties:
IO doesn't obey the monad laws, due to the presence of seq in Haskell. Sad but true... Cheers, Tim -- Tim Chevalier * http://cs.pdx.edu/~tjc/ * Often in error, never in doubt "an intelligent person fights for lost causes,realizing that others are merely effects" -- E.E. Cummings

On 13 April 2011 21:26, Tim Chevalier
IO doesn't obey the monad laws, due to the presence of seq in Haskell. Sad but true...
See also a previous discussion about IO and the Monad laws: http://www.haskell.org/pipermail/haskell-cafe/2010-March/074001.html
participants (4)
-
Burak Ekici
-
Miguel Mitrofanov
-
Roel van Dijk
-
Tim Chevalier