Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Documentation
class (Covariant t, Covariant u) => Adjoint t u where Source #
When providing a new instance, you should ensure it satisfies the four laws: * Left adjunction identity: phi counit ≡ identity * Right adjunction identity: psi unit ≡ identity * Left adjunction interchange: phi f ≡ comap f . eta * Right adjunction interchange: psi f ≡ epsilon . comap f
phi :: (t a -> b) -> a -> u b Source #
Left adjunction
psi :: (a -> u b) -> t a -> b Source #
Right adjunction
Instances
Adjoint Identity Identity Source # | |
(Adjunctive t u, Adjunctive v w) => Adjoint (T Co Co t v) (T Co Co u w) Source # | |
(Adjunctive t w, Adjunctive v x, Adjunctive u y) => Adjoint (TT Co Co Co t v u) (TT Co Co Co w x y) Source # | |
Defined in Data.Functor.Composition.TT | |
(Adjunctive t u, Adjunctive t' u', Adjunctive t'' u'', Adjunctive t''' u''') => Adjoint (TTT Co Co Co Co t t' t'' t''') (TTT Co Co Co Co u u' u'' u''') Source # | |
Defined in Data.Functor.Composition.TTT phi :: (TTT Co Co Co Co t t' t'' t''' a -> b) -> a -> TTT Co Co Co Co u u' u'' u''' b Source # psi :: (a -> TTT Co Co Co Co u u' u'' u''' b) -> TTT Co Co Co Co t t' t'' t''' a -> b Source # eta :: a -> (TTT Co Co Co Co u u' u'' u''' :.: TTT Co Co Co Co t t' t'' t''') a Source # epsilon :: (TTT Co Co Co Co t t' t'' t''' :.: TTT Co Co Co Co u u' u'' u''') a -> a Source # |