module Pandora.Paradigm.Schemes.PQ_ where

import Pandora.Core.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_