| Copyright | (C) 2008-2014 Edward Kmett |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Stability | experimental |
| Portability | non-portable (fundeps, MPTCs) |
| Safe Haskell | Safe |
| Language | Haskell2010 |
Control.Comonad.Env
Description
The Env comonad (aka the Coreader, Environment, or Product comonad)
A co-Kleisli arrow in the Env comonad is isomorphic to a Kleisli arrow in the reader monad.
(a -> e -> m) ~ (a, e) -> m ~ Env e a -> m
- class Comonad w => ComonadEnv e w | w -> e where
- ask :: w a -> e
- asks :: ComonadEnv e w => (e -> e') -> w a -> e'
- local :: (e -> e') -> EnvT e w a -> EnvT e' w a
- type Env e = EnvT e Identity
- env :: e -> a -> Env e a
- runEnv :: Env e a -> (e, a)
- data EnvT e w a = EnvT e (w a)
- runEnvT :: EnvT e w a -> (e, w a)
- module Control.Comonad
- module Control.Comonad.Trans.Class
ComonadEnv class
class Comonad w => ComonadEnv e w | w -> e where Source
Instances
| ComonadEnv e w => ComonadEnv e (IdentityT w) | |
| ComonadEnv e (Arg e) | |
| ComonadEnv e ((,) e) | |
| (ComonadEnv e w, Monoid m) => ComonadEnv e (TracedT m w) | |
| ComonadEnv e w => ComonadEnv e (StoreT t w) | |
| Comonad w => ComonadEnv e (EnvT e w) |
asks :: ComonadEnv e w => (e -> e') -> w a -> e' Source
local :: (e -> e') -> EnvT e w a -> EnvT e' w a Source
Modifies the environment using the specified function.
The Env comonad
The EnvT comonad transformer
Constructors
| EnvT e (w a) |
Instances
| Comonad w => ComonadEnv e (EnvT e w) | |
| ComonadStore s w => ComonadStore s (EnvT e w) | |
| ComonadTraced m w => ComonadTraced m (EnvT e w) | |
| ComonadTrans (EnvT e) | |
| ComonadHoist (EnvT e) | |
| Functor w => Functor (EnvT e w) | |
| Foldable w => Foldable (EnvT e w) | |
| Traversable w => Traversable (EnvT e w) | |
| (Semigroup e, ComonadApply w) => ComonadApply (EnvT e w) | |
| Comonad w => Comonad (EnvT e w) | |
| Typeable (* -> (* -> *) -> * -> *) EnvT | |
| (Data e, Typeable (* -> *) w, Data (w a), Data a) => Data (EnvT e w a) |
Re-exported modules
module Control.Comonad
module Control.Comonad.Trans.Class