Also, maybe the lifting operation could be

plift :: (PMonad m) => m s1 s2 a -> t m s1 s2 s s a

where s1 and s2 are passed to the underlying type constructor. That
way, the kind of m would be

* -> * -> * -> *

and the kind of t would be

(* -> * -> * -> *) -> * -> * -> * -> * -> * -> *

so we see how if we apply the first three types we get * -> * -> * ->
*, which is the kind of m.

Just thinking out loud basically :]

Cheerio!
- BONUS
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to