Monad.Reader
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 environment type left variable.
include S2
with type ('a, 'e) t = ('a, 'e) reader
and type 'a m = 'a
and type ('a, 'e) e = 'e -> 'a
val read : unit -> ('e, 'e) t
read ()
reads the environment.
include Monad2 with type ('a, 'e) t := ('a, 'e) t
sequence xs
computes a sequence of computations xs
in the left to right order.
module Fn : sig ... end
Various function combinators lifted into the Kleisli category.
module Pair : sig ... end
The pair interface lifted into the monad.
module Triple : sig ... end
The triple interface lifted into a monad.
module Lift : sig ... end
Lifts functions into the monad.
module Exn : sig ... end
Interacting between monads and language exceptions
module Collection : sig ... end
Lifts collection interface into the monad.
module List : Collection.S with type 'a t := 'a list
The Monad.Collection.S2 interface for lists
module Seq : Collection.S with type 'a t := 'a Core_kernel.Sequence.t
The Monad.Collection.S2 interface for sequences
include Syntax.Let.S2 with type ('a, 'e) t := ('a, 'e) t
include Core_kernel.Monad.S2 with type ('a, 'e) t := ('a, 'e) t
module Let_syntax : sig ... end
module Monad_infix : sig ... end
val return : 'a -> ('a, 'b) t
module Let : Syntax.Let.S2 with type ('a, 'e) t := ('a, 'e) t
Monadic Binding Operators.
Monadic operators, see Monad.Syntax.S2 for more.
module Make
(T : Core_kernel.T)
(M : 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
.