Legend:
Library
Module
Module type
Parameter
Class
Class type
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 Nicolas Cannasse
author David Teller
type'a t = 'a option
val some : 'a->'a option
some x returns Some x.
since 2.2.0
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 option->('a->'b option)->'b option
bind (Some x) f returns f x and bind None f returns None.
@example "Our functions return option types. Compose them to propagate None."
let pick_long case =
try
Some (List.find (fun data -> List.length data > 1000) case)
with Not_found -> None
let last_null data = List.rindex_of 0 data
let interesting_positions dataset =
List.filter_map
(fun case -> Option.bind last_null (pick_long case))
dataset
val apply : ('a->'a) option->'a->'a
apply None x returns x and apply (Some f) x returns f x
val filter : ('a-> bool)->'a option->'a option
filter f None returns None, filter f (Some x) returns Some x if f x is true, and None otherwise.
val default : 'a->'a option->'a
default x (Some v) returns v and default x None returns x.
val (|?) : 'a option->'a->'a
Like default, with the arguments reversed. None |? 10 returns 10, while Some "foo" |? "bar" returns "foo".
Note This operator does not short circuit like ( || ) and ( && ). Both arguments will be evaluated.
since 2.0
val default_delayed : (unit ->'a)->'a option->'a
Like default, but the default value is passed as a thunk that is only computed if needed.
since 2.1
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 map_default_delayed : ('a->'b)->(unit ->'b)->'a option->'b
Like map_default, but the default value is passed as a thunk that is only computed if needed.
since 2.1
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.
get_exn (Some x) e returns x and get_exn None e raises e.
val compare : ?cmp:('a->'a-> int)->'a option->'a option-> int
Compare two options, possibly using custom comparators for the value. None is always assumed to be less than Some _. The parameter cmp defaults to Pervasives.compare.
val eq : ?eq:('a->'a-> bool)->'a option->'a option-> bool
Test for equality between option types, possibly using a custom equality predicate. The parameter eq defaults to Pervasives.(=).