Frama_c_kernel.OptionExtend the option type to a full fleshed monad. Be wary that the parameters order of the bind function are reversed compared to the standard library.
include module type of OptionThe type for option values. Either None or a value Some v.
value o ~default is v if o is Some v and default otherwise.
join oo is Some v if oo is Some (Some v) and None otherwise.
map f o is None if o is None and Some (f v) if o is Some v.
product o0 o1 is Some (v0, v1) if o0 is Some v0 and o1 is Some v1 and None otherwise.
fold ~none ~some o is none if o is None and some v if o is Some v.
blend f o1 o2 is o1 if o2 is None, o2 if o1 is None, and Some (f v1 v2) if o1 is Some v1 and o2 is Some v2.
for_all p behaves like List.for_all p on a list of zero or one element:
for_all p None is true,for_all p (Some v) is p v.exists p behaves like List.exists p on a list of zero or one element:
exists p None is false,exists p (Some v) is p v.equal eq o0 o1 is true if and only if o0 and o1 are both None or if they are Some v0 and Some v1 and eq v0 v1 is true.
compare cmp o0 o1 is a total order on options using cmp to compare values wrapped by Some _. None is smaller than Some _ values.
val to_result : none:'e -> 'a option -> ('a, 'e) resultto_result ~none o is Ok v if o is Some v and Error none otherwise.
val to_seq : 'a option -> 'a Seq.tto_seq o is o as a sequence. None is the empty sequence and Some v is the singleton sequence containing v.
module Syntax : sig ... endBinding operators. See manual section 12.23 for details.
Reverse Stdlib.Option.bind parameters for monad compatibility. bind f o is f v if o is Some v and None if o is None.