module Pandora.Paradigm.Schemes.TUVW (TUVW (..)) where import Pandora.Core.Functor (type (:.), type (:=)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite)) newtype TUVW ct cu cv cw t u v w a = TUVW (t :. u :. v :. w := a) instance Interpreted (TUVW ct cu cv cw t u v w) where type Primary (TUVW ct cu cv cw t u v w) a = t :. u :. v :. w := a run :: TUVW ct cu cv cw t u v w a -> Primary (TUVW ct cu cv cw t u v w) a run ~(TUVW (t :. (u :. (v :. w))) := a x) = (t :. (u :. (v :. w))) := a Primary (TUVW ct cu cv cw t u v w) a x unite :: Primary (TUVW ct cu cv cw t u v w) a -> TUVW ct cu cv cw t u v w a unite = Primary (TUVW ct cu cv cw t u v w) a -> TUVW ct cu cv cw t u v w a forall k k k k k k k k (ct :: k) (cu :: k) (cv :: k) (cw :: k) (t :: k -> *) (u :: k -> k) (v :: k -> k) (w :: k -> k) (a :: k). ((t :. (u :. (v :. w))) := a) -> TUVW ct cu cv cw t u v w a TUVW