include module type of Containers.Option
with module Infix := Containers.Option.Infix
val map_lazy : (unit -> 'b) -> ('a -> 'b) -> 'a option -> 'b
val is_some : 'a option -> bool
val is_none : 'a option -> bool
val some : 'a -> 'a option
val flat_map_l : ('a -> 'b list) -> 'a option -> 'b list
val k_compose : ('a -> 'b option) -> ('b -> 'c option) -> 'a -> 'c option
val map2 : ('a -> 'b -> 'c) -> 'a option -> 'b option -> 'c option
val filter : ('a -> bool) -> 'a option -> 'a option
val if_ : ('a -> bool) -> 'a -> 'a option
val get_or : default:'a -> 'a option -> 'a
val apply_or : ('a -> 'a option) -> 'a -> 'a
val value : 'a option -> default:'a -> 'a
val get_exn_or : string -> 'a option -> 'a
val get_lazy : (unit -> 'a) -> 'a option -> 'a
val sequence_l : 'a option list -> 'a list option
val wrap : ?handler:(exn -> bool) -> ('a -> 'b) -> 'a -> 'b option
val wrap2 : ?handler:(exn -> bool) -> ('a -> 'b -> 'c) -> 'a -> 'b -> 'c option
val pure : 'a -> 'a option
val or_ : else_:'a option -> 'a option -> 'a option
val or_lazy : else_:(unit -> 'a option) -> 'a option -> 'a option
val choice : 'a option list -> 'a option
val flatten : 'a option option -> 'a option
val return_if : bool -> 'a -> 'a option
val (>|=) : 'a option -> ('a -> 'b) -> 'b option
val (>>=) : 'a option -> ('a -> 'b option) -> 'b option
val (<*>) : ('a -> 'b) option -> 'a option -> 'b option
val (<$>) : ('a -> 'b) -> 'a option -> 'b option
val (<+>) : 'a option -> 'a option -> 'a option
val (|?>) : 'a -> ('a -> 'a option) -> 'a
val let+ : 'a option -> ('a -> 'b) -> 'b option
val and+ : 'a option -> 'b option -> ('a * 'b) option
val let* : 'a option -> ('a -> 'b option) -> 'b option
val and* : 'a option -> 'b option -> ('a * 'b) option
val (>=>) : ('a -> 'b option) -> ('b -> 'c option) -> 'a -> 'c option
val (<=<) : ('b -> 'c option) -> ('a -> 'b option) -> 'a -> 'c option
val to_list : 'a option -> 'a list
val of_list : 'a list -> 'a option
val to_result : 'e -> 'a option -> ('a, 'e) Stdlib.result
val to_result_lazy : (unit -> 'e) -> 'a option -> ('a, 'e) Stdlib.result
val of_result : ('a, 'b) Stdlib.result -> 'a option
type !'a iter = ('a -> unit) -> unit
type !'a gen = unit -> 'a option
type !'a printer = Stdlib.Format.formatter -> 'a -> unit
type !'a random_gen = Stdlib.Random.State.t -> 'a
val choice_iter : 'a option iter -> 'a option
val choice_seq : 'a option Stdlib.Seq.t -> 'a option
val to_gen : 'a option -> 'a gen
val to_seq : 'a option -> 'a Stdlib.Seq.t
val to_iter : 'a option -> 'a iter
include Ppx_compare_lib.Comparable.S1 with type 'a t := 'a t
val compare :
'a Base__Ppx_compare_lib.compare ->
'a t Base__Ppx_compare_lib.compare
include Ppx_compare_lib.Equal.S1 with type 'a t := 'a t
val equal : 'a Base__Ppx_compare_lib.equal -> 'a t Base__Ppx_compare_lib.equal
include Sexplib0.Sexpable.S1 with type 'a t := 'a t
val t_of_sexp : (Sexplib0__.Sexp.t -> 'a) -> Sexplib0__.Sexp.t -> 'a t
val sexp_of_t : ('a -> Sexplib0__.Sexp.t) -> 'a t -> Sexplib0__.Sexp.t
val bind : 'a t -> f:('a -> 'b t) -> 'b t
val map : 'a t -> f:('a -> 'b) -> 'b t
val ap : ('a -> 'b) t -> 'a t -> 'b t
val prod : 'a t -> 'b t -> ('a * 'b) t
val pp :
('a_pp -> 'a -> unit, Stdlib.Format.formatter, unit, unit) Stdlib.format4 ->
'a_pp ->
Stdlib.Format.formatter ->
'a option ->
unit
val map_or : 'a t -> default:'b -> f:('a -> 'b) -> 'b
val flat_map : 'a t -> f:('a -> 'b t) -> 'b t
val iter : 'a t -> f:('a -> unit) -> unit
val exists : 'a t -> f:('a -> bool) -> bool
val for_all : 'a t -> f:('a -> bool) -> bool
val fold : 'a t -> 's -> f:('a -> 's -> 's) -> 's