`sig
type 'a t = '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 m
val bind : 'a m -> ('a -> 'b m) -> 'b m
end
val print :
('a BatInnerIO.output -> 'b -> unit) ->
'a BatInnerIO.output -> 'b 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 end
end`