base
-
base
-
-
base.base_internalhash_types
-
base.caml
-
base.md5
-
base.shadow_stdlib
Library
Module
Module type
Parameter
Class
Class type
Type and Interfaces
val hash_fold_t :
( Hash.state -> 'a -> Hash.state ) ->
Hash.state ->
'a t ->
Hash.state
val t_sexp_grammar : 'a Sexplib0.Sexp_grammar.t -> 'a t Sexplib0.Sexp_grammar.t
include Equal.S1 with type 'a t := 'a t
val equal : 'a Equal.equal -> 'a t Equal.equal
include Invariant.S1 with type 'a t := 'a t
val invariant : ( 'a -> unit ) -> 'a t -> unit
include Sexpable.S1 with type 'a t := 'a t
val t_of_sexp : ( Sexplib0.Sexp.t -> 'a ) -> Sexplib0.Sexp.t -> 'a t
val sexp_of_t : ( 'a -> Sexplib0.Sexp.t ) -> 'a t -> Sexplib0.Sexp.t
Applicative interface
Options form an applicative, where:
return x = Some x
None <*> x = None
Some f <*> None = None
Some f <*> Some x = Some (f x)
Monadic interface
Options form a monad, where:
return x = Some x
(None >>= f) = None
(Some x >>= f) = f x
include 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 Caml.ignore
. Some monads still do let ignore = ignore_m
for historical reasons.
module Let_syntax : sig ... end
These are convenient to have in scope when programming with a monad:
Extracting Underlying Values
val value : 'a t -> default:'a -> 'a
Extracts the underlying value if present, otherwise returns default
.
val value_exn :
?here:Caml.Lexing.position ->
?error:Error.t ->
?message:string ->
'a t ->
'a
Extracts the underlying value, or raises if there is no value present. The error raised can be augmented using the ~here
, ~error
, and ~message
optional arguments.
val value_map : 'a t -> default:'b -> f:( 'a -> 'b ) -> 'b
Extracts the underlying value and applies f
to it if present, otherwise returns default
.
val value_or_thunk : 'a t -> default:( unit -> 'a ) -> 'a
Extracts the underlying value if present, otherwise executes and returns the result of default
. default
is only executed if the underlying value is absent.
val fold : 'a t -> init:'accum -> f:( 'accum -> 'a -> 'accum ) -> 'accum
On None
, returns init
. On Some x
, returns f init x
.
val mem : 'a t -> 'a -> equal:( 'a -> 'a -> bool ) -> bool
Checks whether the provided element is there, using equal
.
val length : 'a t -> int
val iter : 'a t -> f:( 'a -> unit ) -> unit
val exists : 'a t -> f:( 'a -> bool ) -> bool
On None
, returns false
. On Some x
, returns f x
.
val for_all : 'a t -> f:( 'a -> bool ) -> bool
On None
, returns true
. On Some x
, returns f x
.
val find : 'a t -> f:( 'a -> bool ) -> 'a option
find t ~f
returns t
if t = Some x
and f x = true
; otherwise, find
returns None
.
val find_map : 'a t -> f:( 'a -> 'b option ) -> 'b option
On None
, returns None
. On Some x
, returns f x
.
val to_list : 'a t -> 'a list
val to_array : 'a t -> 'a array
val call : 'a -> f:( 'a -> unit ) t -> unit
call x f
runs an optional function ~f
on the argument.
merge a b ~f
merges together the values from a
and b
using f
. If both a
and b
are None
, returns None
. If only one is Some
, returns that one, and if both are Some
, returns Some
of the result of applying f
to the contents of a
and b
.
Constructors
val try_with : ( unit -> 'a ) -> 'a t
try_with f
returns Some x
if f
returns x
and None
if f
raises an exception. See Result.try_with
if you'd like to know which exception.
try_with_join f
returns the optional value returned by f
if it exits normally, and None
if f
raises an exception.
val some : 'a -> 'a t
Wraps the Some
constructor as a function.
first_some t1 t2
returns t1
if it has an underlying value, or t2
otherwise.
val some_if : bool -> 'a -> 'a t
some_if b x
converts a value x
to Some x
if b
, and None
otherwise.
Predicates
val is_none : 'a t -> bool
is_none t
returns true iff t = None
.
val is_some : 'a t -> bool
is_some t
returns true iff t = Some x
.