Module Monads.Std.Monad.Reader

module Reader: sig .. end
The Reader monad.

The reader monad denotes a very limited form of effectful computation. In fact only a coeffect is allowed, i.e., a computation may depend on the state of the world, but can't change the world itself. The reader monad can be seen as a way of threading several functions with some common parameter without pollutiong the namespace with global variables. Also known as the configuration monad, since a common usage would be to use the Reader monad to pass command line arguments and program configuration.


module type S = sig .. end
The reader monad interface with the environment type fixed on the module level.
module type S2 = sig .. end
The reader monad interface with the environemnt type left variable.
type ('a, 'b) reader 
an abstract type of reader computations
include Monads.Std.Monad.Reader.S2
module T1 (T : Std.T)  (M : Std.Monad.Monad) : sig .. end
module T2 (M : Std.Monad.Monad) : sig .. end
module Make (T : Std.T)  (M : Std.Monad.Monad) : S 
        with type 'a t := 'a T1(T)(M).t
         and type 'a m := 'a T1(T)(M).m
         and type 'a e := 'a T1(T)(M).e
         and type env := T.t
Make(Env)(M) concretizes the environment type to Env.t and composes the Reader monad with M.
module Make2 (M : Std.Monad.Monad) : S2 
        with type ('a,'e) t := ('a,'e) T2(M).t
         and type 'a m     := 'a     T2(M).m
         and type ('a,'e) e := ('a,'e) T2(M).e
Make2(Env)(M) composes the Reader monad with M.