sig
  val map : ('-> 'b) -> 'a option -> 'b option
  val map_none : '-> 'a option -> 'a
  val unit_bool : unit option -> bool
  val extract : 'a option -> 'a
  val iter : ('-> unit) -> 'a option -> unit
  val bind : 'a option -> ('-> 'b option) -> 'b option
  val is_some : 'a option -> bool
  val flatten : 'a option option -> 'a option
  val to_list : 'a option -> 'a list
end