pandora-0.4.4: Pandora/Paradigm/Schemes.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Pandora.Paradigm.Schemes (module Exports) where
import Pandora.Paradigm.Schemes.PQ_ as Exports
import Pandora.Paradigm.Schemes.P_Q_T as Exports
import Pandora.Paradigm.Schemes.P_T as Exports
import Pandora.Paradigm.Schemes.PTU as Exports
import Pandora.Paradigm.Schemes.U_T as Exports
import Pandora.Paradigm.Schemes.T_U as Exports
import Pandora.Paradigm.Schemes.UTU as Exports
import Pandora.Paradigm.Schemes.UT as Exports
import Pandora.Paradigm.Schemes.TUVW as Exports
import Pandora.Paradigm.Schemes.TUT as Exports
import Pandora.Paradigm.Schemes.TU as Exports
import Pandora.Pattern.Category ((.), ($))
import Pandora.Pattern.Functor.Covariant (Covariant)
import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-)))
import Pandora.Paradigm.Controlflow.Effect.Interpreted (run)
instance (Covariant (v <:.> t), Covariant (u <:.> w), Adjoint t u (->) (->), Adjoint v w (->) (->))
=> Adjoint (v <:.> t) (u <:.> w) (->) (->) where
g |- TU y = (run . g |-) |- y
f -| x = TU $ (f . TU -|) -| x
instance (Covariant (v <:.> t), Covariant (w <.:> u), Adjoint t u (->) (->), Adjoint v w (->) (->))
=> Adjoint (v <:.> t) (w <.:> u) (->) (->) where
g |- TU t = (run . g |-) |- t
f -| x = UT $ (f . TU -|) -| x
instance (Covariant (t <.:> v), Covariant (w <.:> u), Adjoint t u (->) (->), Adjoint v w (->) (->))
=> Adjoint (t <.:> v) (w <.:> u) (->) (->) where
g |- UT t = (run . g |-) |- t
f -| x = UT $ (f . UT -|) -| x
instance (Covariant (t <.:> v), Covariant (w <:.> u) , Adjoint v u (->) (->), Adjoint t w (->) (->))
=> Adjoint (t <.:> v) (w <:.> u) (->) (->) where
g |- UT x = (run . g |-) |- x
f -| x = TU $ (f . UT -|) -| x
instance (Covariant ((t <:<.>:> u) t'), Covariant ((v <:<.>:> w) v')
, Adjoint t w (->) (->), Adjoint t' v' (->) (->), Adjoint t v (->) (->), Adjoint u v (->) (->), Adjoint v' t' (->) (->))
=> Adjoint ((t <:<.>:> u) t') ((v <:<.>:> w) v') (->) (->) where
g |- TUT x = ((run . g |-) |-) |- x
f -| x = TUT $ ((f . TUT -|) -|) -| x