- 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
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.