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
Hello!
I wouldn't use either. It seems like it complicates things quite a lot and it
looks like this could be solved more simply by setting up the data types or
organizing functions differently.
Is there a specific problem that you're solving or are you just curious about
different return