adjunctions-4.4: Adjunctions and representable functors

Copyright (C) 2011-2013 Edward Kmett BSD-style (see the file LICENSE) Edward Kmett provisional MPTCs Trustworthy Haskell98

Data.Functor.Contravariant.Adjunction

Description

Synopsis

# Documentation

class (Contravariant f, Representable g) => Adjunction f g | f -> g, g -> f where Source #

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.

Minimal complete definition

Methods

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

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

leftAdjunct :: (b -> f a) -> a -> g b Source #

rightAdjunct :: (a -> g b) -> b -> f a Source #

Instances

 Source # This gives rise to the Cont Bool Monad Methodsunit :: a -> Predicate (Predicate a) Source #counit :: a -> Predicate (Predicate a) Source #leftAdjunct :: (b -> Predicate a) -> a -> Predicate b Source #rightAdjunct :: (a -> Predicate b) -> b -> Predicate a Source # Adjunction (Op r) (Op r) Source # This Adjunction gives rise to the Cont Monad Methodsunit :: a -> Op r (Op r a) Source #counit :: a -> Op r (Op r a) Source #leftAdjunct :: (b -> Op r a) -> a -> Op r b Source #rightAdjunct :: (a -> Op r b) -> b -> Op r a Source #

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 :: Adjunction f 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 #