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
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to