On Fri, May 14, 2010 at 4:25 PM, Derek Elkins <derek.a.elk...@gmail.com> wrote: > You did it wrong. All you did was Church encode the Either type. > Your bind is still doing a case-analysis. All you have to do is use > ContT r (Either e). The bind implementation for ContT is completely > independent of the underlying monad. It doesn't even require the m in > ContT r m to be a functor, let alone a monad. Therefore the ContT > bind doesn't do any case-analysis because it doesn't know anything > about the underlying monad. One way to look at what is happening is > to compare it to Andrzej Filiniski's work in "Representing Monads" and > "Representing Layered Monads". >
Would you then use callCC to get the required short-circuit-on-error behavior? A church encoding of Either coded as a monad transformer still wouldn't hit the inner monad on bind, even if it is weaving the left and right continuations together. Antoine _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe