Monad.ReaderThe 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 ... endThe reader monad interface with the environment type fixed on the module level.
module type S2 = sig ... endThe 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 -> 'aval read : unit -> ('e, 'e) tread () reads the environment.
include Monad2 with type ('a, 'e) t := ('a, 'e) tsequence xs computes a sequence of computations xs in the left to right order.
module Fn : sig ... endVarious function combinators lifted into the Kleisli category.
module Pair : sig ... endThe pair interface lifted into the monad.
module Triple : sig ... endThe triple interface lifted into a monad.
module Lift : sig ... endLifts functions into the monad.
module Exn : sig ... endInteracting between monads and language exceptions
module Collection : sig ... endLifts collection interface into the monad.
module List : Collection.S with type 'a t := 'a listThe Monad.Collection.S2 interface for lists
module Seq : Collection.S with type 'a t := 'a Core_kernel.Sequence.tThe Monad.Collection.S2 interface for sequences
include Syntax.Let.S2 with type ('a, 'e) t := ('a, 'e) tinclude Core_kernel.Monad.S2 with type ('a, 'e) t := ('a, 'e) tmodule Let_syntax : sig ... endmodule Monad_infix : sig ... endval return : 'a -> ('a, 'b) tmodule Let : Syntax.Let.S2 with type ('a, 'e) t := ('a, 'e) tMonadic 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.tMake(Env)(M) concretizes the environment type to Env.t and composes the Reader monad with M.