adjunctions- Adjunctions

Safe HaskellNone




class (Contravariant f, Corepresentable g) => Adjunction f g | f -> g, g -> f whereSource

An adjunction from Hask^op to Hask

 Op (f a) b ~ Hask a (g b)
 rightAdjunct unit = id
 leftAdjunct counit = id

Any adjunction from Hask to Hask^op would indirectly permit unsafePerformIO, and therefore does not exist.


unit :: a -> g (f a)Source

counit :: a -> f (g a)Source

leftAdjunct :: (b -> f a) -> a -> g bSource

rightAdjunct :: (a -> g b) -> b -> f aSource


Adjunction Predicate Predicate

This gives rise to the Cont Bool monad

(Contravariant (Op r), Corepresentable (Op r)) => Adjunction (Op r) (Op r)

This adjunction gives rise to the Cont monad

corepAdjunction :: Adjunction f g => (a -> f ()) -> g aSource

Represent a contravariant functor that has a left adjoint

coindexAdjunction :: Adjunction f g => g a -> a -> f ()Source