[Haskell-cafe] Speed of Error handling with Continuations vs.
Eithers
Antoine Latter
aslatter at gmail.com
Fri May 14 17:53:05 EDT 2010
On Fri, May 14, 2010 at 4:25 PM, Derek Elkins <derek.a.elkins at 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
More information about the Haskell-Cafe
mailing list