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