| Copyright | (C) 2011-2013 Edward Kmett | 
|---|---|
| License | BSD-style (see the file LICENSE) | 
| Maintainer | Edward Kmett <ekmett@gmail.com> | 
| Stability | provisional | 
| Portability | MPTCs | 
| Safe Haskell | Trustworthy | 
| Language | Haskell2010 | 
Data.Functor.Contravariant.Adjunction
Description
Synopsis
- class (Contravariant f, Representable g) => Adjunction (f :: Type -> Type) (g :: Type -> Type) | f -> g, g -> f where
- unit :: a -> g (f a)
 - counit :: a -> f (g a)
 - leftAdjunct :: (b -> f a) -> a -> g b
 - rightAdjunct :: (a -> g b) -> b -> f a
 
 - adjuncted :: (Adjunction f g, Profunctor p, Functor h) => p (a -> g b) (h (c -> g d)) -> p (b -> f a) (h (d -> f c))
 - contrarepAdjunction :: Adjunction f g => (a -> f ()) -> g a
 - coindexAdjunction :: Adjunction f g => g a -> a -> f ()
 
Documentation
class (Contravariant f, Representable g) => Adjunction (f :: Type -> Type) (g :: Type -> Type) | f -> g, g -> f where Source #
An adjunction from Hask^op to Hask
Op(f a) b ~Haska (g b)
rightAdjunctunit=idleftAdjunctcounit=id
Any adjunction from Hask to Hask^op would indirectly
 permit unsafePerformIO, and therefore does not exist.
Minimal complete definition
Methods
counit :: a -> f (g a) Source #
leftAdjunct :: (b -> f a) -> a -> g b Source #
rightAdjunct :: (a -> g b) -> b -> f a Source #
Instances
| Adjunction Predicate Predicate Source # | This gives rise to the   | 
| Adjunction (Op r) (Op r) Source # | This   | 
adjuncted :: (Adjunction f g, Profunctor p, Functor h) => p (a -> g b) (h (c -> g d)) -> p (b -> f a) (h (d -> f c)) Source #
leftAdjunct and rightAdjunct form two halves of an isomorphism.
This can be used with the combinators from the lens package.
adjuncted::Adjunctionf g =>Iso'(b -> f a) (a -> g b)
contrarepAdjunction :: Adjunction f g => (a -> f ()) -> g a Source #
Represent a Contravariant functor that has a left adjoint
coindexAdjunction :: Adjunction f g => g a -> a -> f () Source #