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 cozero ≡ identity * Right adjunction identity: psi zero ≡ 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 # | |
(Extractable t, Pointable t, Extractable u, Pointable u) => Adjoint (Yoneda t) (Yoneda u) Source # | |
Adjoint (Product a) ((->) a :: Type -> Type) Source # | |
(t :-|: u, v :-|: w) => Adjoint (TU Co Co t v) (TU Co Co u w) Source # | |
(t :-|: w, v :-|: x, u :-|: y) => Adjoint (TUV Co Co Co t v u) (TUV Co Co Co w x y) Source # | |
Defined in Pandora.Pattern.Junction.Schemes.TUV | |
(t :-|: u, v :-|: w, q :-|: q, r :-|: s) => Adjoint (TUVW Co Co Co Co t v q r) (TUVW Co Co Co Co u w q s) Source # | |
Defined in Pandora.Pattern.Junction.Schemes.TUVW phi :: (TUVW Co Co Co Co t v q r a -> b) -> a -> TUVW Co Co Co Co u w q s b Source # psi :: (a -> TUVW Co Co Co Co u w q s b) -> TUVW Co Co Co Co t v q r a -> b Source # eta :: a -> (TUVW Co Co Co Co u w q s :.: TUVW Co Co Co Co t v q r) >< a Source # epsilon :: ((TUVW Co Co Co Co t v q r :.: TUVW Co Co Co Co u w q s) >< a) -> a Source # |