OptionModule 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
module Smart : sig ... endmodule List : sig ... end