module Pandora.Paradigm.Schemes.P_T where import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite)) newtype P_T p t a b = P_T (p (t a) b) instance Interpreted (P_T p t a) where type Primary (P_T p t a) b = p (t a) b run :: P_T p t a a -> Primary (P_T p t a) a run ~(P_T p (t a) a x) = p (t a) a Primary (P_T p t a) a x unite :: Primary (P_T p t a) a -> P_T p t a a unite = Primary (P_T p t a) a -> P_T p t a a forall k k k (p :: k -> k -> *) (t :: k -> k) (a :: k) (b :: k). p (t a) b -> P_T p t a b P_T