[Haskell-cafe] Can every monad can be implemented with Cont?
(was: New slogan for haskell.org)
Dan Doel
dan.doel at gmail.com
Sat Oct 13 13:28:19 EDT 2007
On Saturday 13 October 2007, Albert Y. C. Lai wrote:
> jeff p wrote:
> > I think this is referring to Andrzej Filinski's paper "Representing
> > Layered Monads" in which it shown that stacks of monads can be
> > implemented directly (no layering) by using call/cc and mutable state.
>
> I have been unable to see how to bring its crucial "reify" and "reflect"
> to Haskell. In particular reflect:
>
> reflect :: m a -> a
>
> It looks very magical.
Here: http://cs.ioc.ee/mpc-amast06/msfp/filinski-slides.pdf
are some slides Filinski made about doing monadic reflection in Haskell (there
might be a corresponding paper, but a cursory googling didn't find it).
The thing is, 'reflect' in Haskell doesn't have type 'm a -> a' It has type
something like:
m a -> ContState a
However, in the languages he usually works with, everything is already
implicitly in a ContState monad, in that they have mutable references and
native continuations. Hence the type 'm a -> a' there.
At least, I think that's the explanation.
-- Dan
More information about the Haskell-Cafe
mailing list