Portability | portable |
---|---|
Stability | experimental |
Maintainer | Edward Kmett <ekmett@gmail.com> |
If you look at the reader arrow:
(e, a) -> a
you can see that all the interesting bits are bunched
on the left. This is that comonad. Flipping the pair and currying the
arguments yields a -> (e -> a)
, and you can recognize the (e -> a) as
the reader monad. In more technical language the Reader comonad is
left adjoint to the Reader monad.
Documentation
Coreader r a |
runCoreader :: Coreader r a -> (r, a)Source
newtype CoreaderT w r a Source
CoreaderT | |
|
Comonad w => ComonadReader r (CoreaderT w r) | |
ComonadCofree f w => ComonadCofree f (CoreaderT w e) | |
Functor f => QFunctor (CoreaderT f) Hask Hask | |
Functor f => PFunctor (CoreaderT f) Hask Hask | |
Functor f => Bifunctor (CoreaderT f) Hask Hask Hask | |
Functor f => Functor (CoreaderT f b) | |
Copointed w => Copointed (CoreaderT w b) | |
Comonad w => Comonad (CoreaderT w b) |
class Comonad w => ComonadReader r w | w -> r whereSource
ComonadReader e ((,) e) | |
ComonadReader r (Coreader r) | |
ComonadReader e w => ComonadReader e (Density w) | |
ComonadReader e m => ComonadReader e (CoYoneda m) | |
ComonadReader e m => ComonadReader e (Yoneda m) | |
Comonad w => ComonadReader r (CoreaderT w r) |