Option
Module implementing basic combinators for OCaml option type. It tries follow closely the style of OCaml standard library.
Actually, some operations have the same name as List
ones: they actually are similar considering 'a option
as a type of lists with at most one element.
equal f x y
lifts the equality predicate f
to option types. That is, if both x
and y
are None
then it returns true
, if they are both Some _
then f
is called. Otherwise it returns false
.
bind x f
is f y
if x
is Some y
and None
otherwise
filter f x
is x
if x
Some y
and f y
is true, None
otherwise
flatten x
is Some y
if x
is Some (Some y)
and None
otherwise.
append x y
is the first element of the concatenation of x
and y
seen as lists. In other words, append (Some a) y
is Some
a
, append None (Some b)
is Some b
, and append None None
is None
.
iter f x
executes f y
if x
equals Some y
. It does nothing otherwise.
iter2 f x y
executes f z w
if x
equals Some z
and y
equals Some w
. It does nothing if both x
and y
are None
.
map f x
is None
if x
is None
and Some (f y)
if x
is Some y
.
fold_left f a x
is f a y
if x
is Some y
, and a
otherwise.
fold_left2 f a x y
is f z w
if x
is Some z
and y
is Some w
. It is a
if both x
and y
are None
.
fold_right f x a
is f y a
if x
is Some y
, and a
otherwise.
fold_left_map f a x
is a, f y
if x
is Some y
, and a
otherwise.
Same as fold_left_map
on the right
lift
is the same as map
.
lift_right f a x
is Some (f a y)
if x
is Some y
, and None
otherwise.
lift_left f x a
is Some (f y a)
if x
is Some y
, and None
otherwise.
lift2 f x y
is Some (f z w)
if x
equals Some z
and y
equals Some w
. It is None
otherwise.
module Smart : sig ... end
module List : sig ... end