HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulemonads-tf-0.3.0.1GHC2021

Control.Monad.Reader.Class

Computation type:

Computations which read values from a shared environment.

Binding strategy:

Monad values are functions from the environment to a value. The bound function is applied to the bound value, and both have access to the shared environment.

Useful for:

Maintaining variable bindings, or other shared environment.

Zero and plus:

None.

Example type:

Reader [(String,Value)] a

The Reader monad (also called the Environment monad). Represents a computation, which can read values from a shared environment, pass values from function to function, and execute sub-computations in a modified environment. Using Reader monad for such computations is often clearer and easier than using the Control.Monad.State.State monad.

Inspired by the paper Functional Programming with Overloading and Higher-Order Polymorphism, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995.

  • 1 class
  • 1 value
classclass Monad m => MonadReader (m :: Type -> Type) where
#

See examples in Control.Monad.Reader. Note, the partially applied function type (->) r is a simple reader monad. See the instance declaration below.

Associated types

Methods

  • ask :: m (EnvType m)

    Retrieves the monad environment.

  • local :: (EnvType m -> EnvType m) -> m a -> m a

    Executes a computation in a modified environment.

Instances12MonadReader, …
valueasks
  1. :: MonadReader m
  2. => (EnvType m -> a)

    The selector function to apply to the environment.

  3. -> m a
#

Retrieves a function of the current environment.