pandora-0.4.6: 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.Semigroupoid ((.))
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