category-extras-0.50.3: Various modules and constructs inspired by category theoryContentsIndex
Control.Functor.KanExtension
Portabilitynon-portable (rank-2 polymorphism)
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Description

Left and right Kan extensions, expressed as higher order functors

Included is the 'monad generated by a functor' Ran f f and the comonad cogenerated by a functor Lan f f.

Synopsis
newtype Ran g h a = Ran {
runRan :: forall b. (a -> g b) -> h b
}
toRan :: (Composition o, Functor k) => ((k `o` g) :~> h) -> k :~> Ran g h
fromRan :: Composition o => (k :~> Ran g h) -> (k `o` g) :~> h
data Lan g h a = forall b . Lan (g b -> a) (h b)
toLan :: (Composition o, Functor f) => (h :~> (f `o` g)) -> Lan g h :~> f
fromLan :: Composition o => (Lan g h :~> f) -> h :~> (f `o` g)
rep :: Monad m => m a -> Ran m m a
abs :: Monad m => Ran m m a -> m a
corep :: Comonad w => Lan w w a -> w a
coabs :: Comonad w => w a -> Lan w w a
Documentation
newtype Ran g h a
Right Kan Extension
Constructors
Ran
runRan :: forall b. (a -> g b) -> h b
show/hide Instances
FreeLike f m => FreeLike f (Ran m m)
HFunctor (Ran g)
Monad (Ran f f)
Functor (Ran g h)
Pointed (Ran f f)
toRan :: (Composition o, Functor k) => ((k `o` g) :~> h) -> k :~> Ran g h
fromRan :: Composition o => (k :~> Ran g h) -> (k `o` g) :~> h
data Lan g h a
Left Kan Extension
Constructors
forall b . Lan (g b -> a) (h b)
show/hide Instances
CofreeLike f w => CofreeLike f (Lan w w)
Functor g => HFunctor (Lan g)
Functor (Lan f g)
Copointed (Lan f f)
Comonad (Lan f f)
toLan :: (Composition o, Functor f) => (h :~> (f `o` g)) -> Lan g h :~> f
fromLan :: Composition o => (Lan g h :~> f) -> h :~> (f `o` g)
rep :: Monad m => m a -> Ran m m a
See http://wwwtcs.inf.tu-dresden.de/%7Evoigt/mpc08.pdf
abs :: Monad m => Ran m m a -> m a
corep :: Comonad w => Lan w w a -> w a
coabs :: Comonad w => w a -> Lan w w a
Produced by Haddock version 2.1.0