Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
Or_unequal_lengths
is used for functions that take multiple non-empty lists (denoted t1
, etc). Defines the dependent type: {'a : length t1 = length t2 = ... length tn}
. Extends the Base.List.Or_unequal_lengths
implementation with the Monad methods, improves readabily and reuseability of other library functions.
include module type of Base.List.Or_unequal_lengths
Or_unequal_lengths
is used for functions that take multiple lists and that only make sense if all the lists have the same length, e.g., iter2
, map3
. Such functions check the list lengths prior to doing anything else, and return Unequal_lengths
if not all the lists have the same length.
Or_unequal_lengths
is used for functions that take multiple lists and that only make sense if all the lists have the same length, e.g., iter2
, map3
. Such functions check the list lengths prior to doing anything else, and return Unequal_lengths
if not all the lists have the same length.
val sexp_of_t : ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.t
include Base.Monad.S with type 'a t := 'a t
t >>= f
returns a computation that sequences the computations represented by two monad elements. The resulting computation first does t
to yield a value v
, and then runs the computation returned by f v
.
module Monad_infix : sig ... end
val return : 'a -> 'a t
return v
returns the (trivial) computation that returns v.
ignore_m t
is map t ~f:(fun _ -> ())
. ignore_m
used to be called ignore
, but we decided that was a bad name, because it shadowed the widely used Stdlib.ignore
. Some monads still do let ignore = ignore_m
for historical reasons.
Like all
, but ensures that every monadic value in the list produces a unit value, all of which are discarded rather than being collected into a list.
module Let_syntax : sig ... end
These are convenient to have in scope when programming with a monad: