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

Reply via email to