module Pandora.Paradigm.Schemes.P_T where

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