Up

Module Lazy_m = Lazy_m

Signature

type 'a t

The lazy type

val of_val : 'a -> 'a t

Create a lazy value of a non-lazy value. The lazy value created will be already forced, for obvious reasons.

val of_fun : (unit -> 'a) -> 'a t

Create a lazy value of a function. The function will not be executed until the lazy value is first forced, and will only be executed once.

If the function raises an exception, all futures forces of the lazy value will also raise the same exception.

val force : 'a t -> 'a

Force the lazy value.

If the function that produces the value throws an exception, this function will throw the same exception.

val is_val : 'a t -> bool

Returns true if the lazy value has been forced and did not throw an exception.

include Core.Std.Interfaces.Monad with type 'a t := 'a t
type 'a t
include Monad_intf.S_without_syntax with type 'a t := 'a t
type 'a t

A monad is an abstraction of the concept of sequencing of computations. A value of type 'a monad represents a computation that returns a value of type 'a.

include Monad_intf.Infix with type 'a t := 'a t
type 'a t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b 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.

val (>>|) : 'a t -> ('a -> 'b) -> 'b t

t >>| f is t >>= (fun a -> return (f a)).

module Monad_infix : Monad_intf.Infix with type 'a t := 'a t
val bind : 'a t -> ('a -> 'b t) -> 'b t

bind t f = t >>= f

val return : 'a -> 'a t

return v returns the (trivial) computation that returns v.

val map : 'a t -> f:('a -> 'b) -> 'b t

map t ~f is t >>| f.

val join : 'a t t -> 'a t

join t is t >>= (fun t' -> t').

val ignore_m : 'a t -> unit t

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 Pervasives.ignore. Some monads still do let ignore = ignore_m for historical reasons.

val all : 'a t list -> 'a list t
val all_ignore : unit t list -> unit t
include Monad_intf.Syntax with type 'a t := 'a t
type 'a t
module Let_syntax : sig .. end