Sorry, I don't think I made myself clear. I'm not defining PI, it's the
standard type binding operator, like lambda is the variable binding
operator. Maybe I could write it as 'II' so it looks more like a
capital pi. It's not a feature of Haskell, but part of type theory
(dependent types). I was mixing and matching and making it look like
Haskell. So instead of 'PI r -> ContT r m', I could write 'flip ContT',
except that 'flip' needs to work on a type level instead of a value
level. Or I could write '(`ContT` m)', or 'ContT _ m', where the '_' is
a hole. Does this make sense now?
Regards,
Lyle Kopnicky
Chung-chieh Shan wrote:
On 2004-08-30T17:09:39-0700, Lyle Kopnicky wrote:
Unfortunately, I need 'PI r -> ContT r m', along with a and r, to be a
member of the MonadPCont class (PI is the type binding operator). So I
thought I'd define ContT' to take the arguments the other way around.
Unfortunately, it can't be partially applied.
What's your definition of PI? I suspect you simply need to define a
newtype that wraps around 'PI r -> ContT r m'.
See also:
Wadler, Philip L. 1994. Monads and composable continuations. Lisp and
Symbolic Computation 7(1): 39-56.
http://homepages.inf.ed.ac.uk/wadler/topics/monads.html#composable
------------------------------------------------------------------------
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe