Module Option

module Option: Extlib.Option
Functions for the option type.

Options are an Ocaml standard type that can be either None (undefined) or Some x where x can be any value. Options are widely used in Ocaml to represent undefined values (a little like NULL in C, but in a type and memory safe way). This module adds some functions for working with options.
Author(s): Nicolas Cannasse, David Teller

type 'a t = 'a option 
val may : ('a -> unit) -> 'a option -> unit
may f (Some x) calls f x and may f None does nothing.
val map : ('a -> 'b) -> 'a option -> 'b option
map f (Some x) returns Some (f x) and map f None returns None.
val bind : ('a -> 'b option) -> 'a option -> 'b option
bind f (Some x) returns f x and bind f None returns None.
val default : 'a -> 'a option -> 'a
default x (Some v) returns v and default x None returns x.
val map_default : ('a -> 'b) -> 'b -> 'a option -> 'b
map_default f x (Some v) returns f v and map_default f x None returns x.
val is_none : 'a option -> bool
is_none None returns true otherwise it returns false.
val is_some : 'a option -> bool
is_some (Some x) returns true otherwise it returns false.
val get : 'a option -> 'a
get (Some x) returns x and get None raises No_value.
val get_exn : 'a option -> exn -> 'a
get_exn (Some x) e returns x and get_exn None e raises e.
val enum : 'a option -> 'a Enum.t
enum (Some x) returns the singleton x, while enum None returns the empty enumeration
val of_enum : 'a Enum.t -> 'a option
of_enum e consumes the first element of e, if it exists, and returns Some e. If e is empty, return None
exception No_value
Raised when calling get None.

Boilerplate code


val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t


val print : ('a Extlib.InnerIO.output -> 'b -> unit) ->
'a Extlib.InnerIO.output -> 'b t -> unit
val t_printer : 'a Value_printer.t -> 'a t Value_printer.t
val maybe_printer : 'a Value_printer.t -> 'a t Value_printer.t
module Option.Labels: sig .. end
Operations on options, with labels.