sig
exception No_value of string
val value : 'a option -> default:'a -> 'a
val value_exn : 'a option -> msg:string -> 'a
val map : 'a option -> f:('a -> 'b) -> 'b option
val iter : 'a option -> f:('a -> unit) -> unit
val value_map : 'a option -> default:'b -> f:('a -> 'b) -> 'b
val return : 'a -> 'a option
val bind : 'a option -> f:('a -> 'b option) -> 'b option
val ( >>= ) : 'a option -> ('a -> 'b option) -> 'b option
end