Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Pandora.Pattern.Functor.Adjoint
Documentation
class (Covariant t target source, Covariant u source target) => Adjoint t u source target where Source #
When providing a new instance, you should ensure it satisfies: * Left adjunction identity: phi cozero ≡ identity * Right adjunction identity: psi zero ≡ identity * Left adjunction interchange: phi f ≡ comap f . eta * Right adjunction interchange: psi f ≡ epsilon . comap f
Instances
Adjoint Identity Identity ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
(Extractable t ((->) :: Type -> Type -> Type), Pointable t ((->) :: Type -> Type -> Type), Extractable u ((->) :: Type -> Type -> Type), Pointable u ((->) :: Type -> Type -> Type)) => Adjoint (Yoneda t) (Yoneda u) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
Adjoint (Store s) (State s) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
Adjoint (Equipment e) (Environment e) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
Defined in Pandora.Paradigm.Inventory Methods (-|) :: (Equipment e a -> b) -> a -> Environment e b Source # (|-) :: (a -> Environment e b) -> Equipment e a -> b Source # | |
Adjoint (Accumulator e) (Imprint e) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
Defined in Pandora.Paradigm.Inventory Methods (-|) :: (Accumulator e a -> b) -> a -> Imprint e b Source # (|-) :: (a -> Imprint e b) -> Accumulator e a -> b Source # | |
Adjoint ((:*:) s) ((->) s :: Type -> Type) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
Adjoint (Flip (:*:) s) ((->) s :: Type -> Type) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
(Covariant (t <.:> v) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Covariant (w <:.> u) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint v u ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint t w ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type)) => Adjoint (t <.:> v) (w <:.> u) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
(Covariant (t <.:> v) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Covariant (w <.:> u) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint t u ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint v w ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type)) => Adjoint (t <.:> v) (w <.:> u) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
(Covariant (v <:.> t) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Covariant (w <.:> u) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint t u ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint v w ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type)) => Adjoint (v <:.> t) (w <.:> u) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
(Covariant (v <:.> t) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Covariant (u <:.> w) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint t u ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint v w ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type)) => Adjoint (v <:.> t) (u <:.> w) ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |
(Covariant ((t <:<.>:> u) t') ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Covariant ((v <:<.>:> w) v') ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint t w ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint t' v' ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint t v ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint u v ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type), Adjoint v' t' ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type)) => Adjoint ((t <:<.>:> u) t') ((v <:<.>:> w) v') ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Source # | |