Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Documentation
class (Covariant target source t, Covariant source target u) => Adjoint source target t u 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 ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) Identity Identity Source # | |
Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (Store s) (State s) Source # | |
Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (Equipment e) (Environment e) Source # | |
Defined in Pandora.Paradigm.Inventory (-|) :: (Equipment e a -> b) -> a -> Environment e b Source # (|-) :: (a -> Environment e b) -> Equipment e a -> b Source # | |
Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (Accumulator e) (Imprint e) Source # | |
Defined in Pandora.Paradigm.Inventory (-|) :: (Accumulator e a -> b) -> a -> Imprint e b Source # (|-) :: (a -> Imprint e b) -> Accumulator e a -> b Source # | |
Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) ((:*:) s) ((->) s :: Type -> Type) Source # | |
Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (Flip (:*:) s) ((->) s :: Type -> Type) Source # | |
(Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (t <.:> v), Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (w <:.> u), Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) v u, Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) t w) => Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (t <.:> v) (w <:.> u) Source # | |
(Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (t <.:> v), Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (w <.:> u), Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) t u, Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) v w) => Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (t <.:> v) (w <.:> u) Source # | |
(Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (v <:.> t), Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (w <.:> u), Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) t u, Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) v w) => Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (v <:.> t) (w <.:> u) Source # | |
(Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (v <:.> t), Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (u <:.> w), Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) t u, Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) v w) => Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) (v <:.> t) (u <:.> w) Source # | |
(Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) ((t <:<.>:> u) t'), Covariant ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) ((v <:<.>:> w) v'), Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) t w, Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) t' v', Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) t v, Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) u v, Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) v' t') => Adjoint ((->) :: Type -> Type -> Type) ((->) :: Type -> Type -> Type) ((t <:<.>:> u) t') ((v <:<.>:> w) v') Source # | |