`sig type 'a t = 'a option val some : 'a -> 'a option val may : ('a -> unit) -> 'a option -> unit val map : ('a -> 'b) -> 'a option -> 'b option val bind : 'a option -> ('a -> 'b option) -> 'b option val apply : ('a -> 'a) option -> 'a -> 'a val filter : ('a -> bool) -> 'a option -> 'a option val default : 'a -> 'a option -> 'a val ( |? ) : 'a option -> 'a -> 'a val default_delayed : (unit -> 'a) -> 'a option -> 'a val map_default : ('a -> 'b) -> 'b -> 'a option -> 'b val map_default_delayed : ('a -> 'b) -> (unit -> 'b) -> 'a option -> 'b val is_none : 'a option -> bool val is_some : 'a option -> bool val get : 'a option -> 'a val get_exn : 'a option -> exn -> 'a val compare : ?cmp:('a -> 'a -> int) -> 'a option -> 'a option -> int val eq : ?eq:('a -> 'a -> bool) -> 'a option -> 'a option -> bool val enum : 'a option -> 'a BatEnum.t val of_enum : 'a BatEnum.t -> 'a option module Monad : sig type 'a m = 'a option val return : 'a -> 'a BatOption.Monad.m val bind : 'a BatOption.Monad.m -> ('a -> 'b BatOption.Monad.m) -> 'b BatOption.Monad.m end val ord : 'a BatOrd.ord -> 'a option BatOrd.ord val print : ('a BatInnerIO.output -> 'b -> unit) -> 'a BatInnerIO.output -> 'b BatOption.t -> unit module Labels : sig val may : f:('a -> unit) -> 'a option -> unit val map : f:('a -> 'b) -> 'a option -> 'b option val map_default : f:('a -> 'b) -> 'b -> 'a option -> 'b end module Infix : sig val ( |? ) : 'a option -> 'a -> 'a val ( >>= ) : 'a option -> ('a -> 'b option) -> 'b option end end`