sig
  type 'a t = ('-> unit) -> unit
  type 'a sequence = 'Sequence.t
  type ('a, 'b) t2 = ('-> '-> unit) -> unit
  type 'a equal = '-> '-> bool
  type 'a hash = '-> int
  val from_iter : (('-> unit) -> unit) -> 'Sequence.t
  val from_fun : (unit -> 'a option) -> 'Sequence.t
  val empty : 'Sequence.t
  val singleton : '-> 'Sequence.t
  val doubleton : '-> '-> 'Sequence.t
  val init : (int -> 'a) -> 'Sequence.t
  val cons : '-> 'Sequence.t -> 'Sequence.t
  val snoc : 'Sequence.t -> '-> 'Sequence.t
  val return : '-> 'Sequence.t
  val pure : '-> 'Sequence.t
  val repeat : '-> 'Sequence.t
  val iterate : ('-> 'a) -> '-> 'Sequence.t
  val forever : (unit -> 'b) -> 'Sequence.t
  val cycle : 'Sequence.t -> 'Sequence.t
  val iter : ('-> unit) -> 'Sequence.t -> unit
  val iteri : (int -> '-> unit) -> 'Sequence.t -> unit
  val fold : ('-> '-> 'a) -> '-> 'Sequence.t -> 'a
  val foldi : ('-> int -> '-> 'a) -> '-> 'Sequence.t -> 'a
  val fold_map :
    ('acc -> '-> 'acc * 'b) -> 'acc -> 'Sequence.t -> 'Sequence.t
  val fold_filter_map :
    ('acc -> '-> 'acc * 'b option) ->
    'acc -> 'Sequence.t -> 'Sequence.t
  val map : ('-> 'b) -> 'Sequence.t -> 'Sequence.t
  val mapi : (int -> '-> 'b) -> 'Sequence.t -> 'Sequence.t
  val map_by_2 : ('-> '-> 'a) -> 'Sequence.t -> 'Sequence.t
  val for_all : ('-> bool) -> 'Sequence.t -> bool
  val exists : ('-> bool) -> 'Sequence.t -> bool
  val mem : ?eq:('-> '-> bool) -> '-> 'Sequence.t -> bool
  val find : ('-> 'b option) -> 'Sequence.t -> 'b option
  val find_map : ('-> 'b option) -> 'Sequence.t -> 'b option
  val findi : (int -> '-> 'b option) -> 'Sequence.t -> 'b option
  val find_mapi : (int -> '-> 'b option) -> 'Sequence.t -> 'b option
  val find_pred : ('-> bool) -> 'Sequence.t -> 'a option
  val find_pred_exn : ('-> bool) -> 'Sequence.t -> 'a
  val length : 'Sequence.t -> int
  val is_empty : 'Sequence.t -> bool
  val filter : ('-> bool) -> 'Sequence.t -> 'Sequence.t
  val append : 'Sequence.t -> 'Sequence.t -> 'Sequence.t
  val append_l : 'Sequence.t list -> 'Sequence.t
  val concat : 'Sequence.t Sequence.t -> 'Sequence.t
  val flatten : 'Sequence.t Sequence.t -> 'Sequence.t
  val flat_map : ('-> 'Sequence.t) -> 'Sequence.t -> 'Sequence.t
  val flat_map_l : ('-> 'b list) -> 'Sequence.t -> 'Sequence.t
  val seq_list : 'Sequence.t list -> 'a list Sequence.t
  val seq_list_map : ('-> 'Sequence.t) -> 'a list -> 'b list Sequence.t
  val filter_map : ('-> 'b option) -> 'Sequence.t -> 'Sequence.t
  val filter_mapi :
    (int -> '-> 'b option) -> 'Sequence.t -> 'Sequence.t
  val intersperse : '-> 'Sequence.t -> 'Sequence.t
  val persistent : 'Sequence.t -> 'Sequence.t
  val persistent_lazy : 'Sequence.t -> 'Sequence.t
  val sort : ?cmp:('-> '-> int) -> 'Sequence.t -> 'Sequence.t
  val sort_uniq : ?cmp:('-> '-> int) -> 'Sequence.t -> 'Sequence.t
  val sorted : ?cmp:('-> '-> int) -> 'Sequence.t -> bool
  val group_succ_by :
    ?eq:('-> '-> bool) -> 'Sequence.t -> 'a list Sequence.t
  val group_by :
    ?hash:('-> int) ->
    ?eq:('-> '-> bool) -> 'Sequence.t -> 'a list Sequence.t
  val count :
    ?hash:('-> int) ->
    ?eq:('-> '-> bool) -> 'Sequence.t -> ('a * int) Sequence.t
  val uniq : ?eq:('-> '-> bool) -> 'Sequence.t -> 'Sequence.t
  val product : 'Sequence.t -> 'Sequence.t -> ('a * 'b) Sequence.t
  val diagonal_l : 'a list -> ('a * 'a) Sequence.t
  val diagonal : 'Sequence.t -> ('a * 'a) Sequence.t
  val product2 : 'Sequence.t -> 'Sequence.t -> ('a, 'b) Sequence.t2
  val join :
    join_row:('-> '-> 'c option) ->
    'Sequence.t -> 'Sequence.t -> 'Sequence.t
  val join_by :
    ?eq:'key Sequence.equal ->
    ?hash:'key Sequence.hash ->
    ('-> 'key) ->
    ('-> 'key) ->
    merge:('key -> '-> '-> 'c option) ->
    'Sequence.t -> 'Sequence.t -> 'Sequence.t
  val join_all_by :
    ?eq:'key Sequence.equal ->
    ?hash:'key Sequence.hash ->
    ('-> 'key) ->
    ('-> 'key) ->
    merge:('key -> 'a list -> 'b list -> 'c option) ->
    'Sequence.t -> 'Sequence.t -> 'Sequence.t
  val group_join_by :
    ?eq:'Sequence.equal ->
    ?hash:'Sequence.hash ->
    ('-> 'a) -> 'Sequence.t -> 'Sequence.t -> ('a * 'b list) Sequence.t
  val inter :
    ?eq:'Sequence.equal ->
    ?hash:'Sequence.hash -> 'Sequence.t -> 'Sequence.t -> 'Sequence.t
  val union :
    ?eq:'Sequence.equal ->
    ?hash:'Sequence.hash -> 'Sequence.t -> 'Sequence.t -> 'Sequence.t
  val diff :
    ?eq:'Sequence.equal ->
    ?hash:'Sequence.hash -> 'Sequence.t -> 'Sequence.t -> 'Sequence.t
  val subset :
    ?eq:'Sequence.equal ->
    ?hash:'Sequence.hash -> 'Sequence.t -> 'Sequence.t -> bool
  val unfoldr : ('-> ('a * 'b) option) -> '-> 'Sequence.t
  val scan : ('-> '-> 'b) -> '-> 'Sequence.t -> 'Sequence.t
  val max : ?lt:('-> '-> bool) -> 'Sequence.t -> 'a option
  val max_exn : ?lt:('-> '-> bool) -> 'Sequence.t -> 'a
  val min : ?lt:('-> '-> bool) -> 'Sequence.t -> 'a option
  val min_exn : ?lt:('-> '-> bool) -> 'Sequence.t -> 'a
  val sum : int Sequence.t -> int
  val sumf : float Sequence.t -> float
  val head : 'Sequence.t -> 'a option
  val head_exn : 'Sequence.t -> 'a
  val take : int -> 'Sequence.t -> 'Sequence.t
  val take_while : ('-> bool) -> 'Sequence.t -> 'Sequence.t
  val fold_while :
    ('-> '-> 'a * [ `Continue | `Stop ]) -> '-> 'Sequence.t -> 'a
  val drop : int -> 'Sequence.t -> 'Sequence.t
  val drop_while : ('-> bool) -> 'Sequence.t -> 'Sequence.t
  val rev : 'Sequence.t -> 'Sequence.t
  val empty2 : ('a, 'b) Sequence.t2
  val is_empty2 : ('a, 'b) Sequence.t2 -> bool
  val length2 : ('a, 'b) Sequence.t2 -> int
  val zip : ('a, 'b) Sequence.t2 -> ('a * 'b) Sequence.t
  val unzip : ('a * 'b) Sequence.t -> ('a, 'b) Sequence.t2
  val zip_i : 'Sequence.t -> (int, 'a) Sequence.t2
  val fold2 : ('-> '-> '-> 'c) -> '-> ('a, 'b) Sequence.t2 -> 'c
  val iter2 : ('-> '-> unit) -> ('a, 'b) Sequence.t2 -> unit
  val map2 : ('-> '-> 'c) -> ('a, 'b) Sequence.t2 -> 'Sequence.t
  val map2_2 :
    ('-> '-> 'c) ->
    ('-> '-> 'd) -> ('a, 'b) Sequence.t2 -> ('c, 'd) Sequence.t2
  val to_list : 'Sequence.t -> 'a list
  val to_rev_list : 'Sequence.t -> 'a list
  val of_list : 'a list -> 'Sequence.t
  val on_list : ('Sequence.t -> 'Sequence.t) -> 'a list -> 'b list
  val pair_with_idx : 'Sequence.t -> (int * 'a) Sequence.t
  val to_opt : 'Sequence.t -> 'a option
  val to_array : 'Sequence.t -> 'a array
  val of_array : 'a array -> 'Sequence.t
  val of_array_i : 'a array -> (int * 'a) Sequence.t
  val of_array2 : 'a array -> (int, 'a) Sequence.t2
  val array_slice : 'a array -> int -> int -> 'Sequence.t
  val of_opt : 'a option -> 'Sequence.t
  val of_stream : 'Stream.t -> 'Sequence.t
  val to_stream : 'Sequence.t -> 'Stream.t
  val to_stack : 'Stack.t -> 'Sequence.t -> unit
  val of_stack : 'Stack.t -> 'Sequence.t
  val to_queue : 'Queue.t -> 'Sequence.t -> unit
  val of_queue : 'Queue.t -> 'Sequence.t
  val hashtbl_add : ('a, 'b) Hashtbl.t -> ('a * 'b) Sequence.t -> unit
  val hashtbl_replace : ('a, 'b) Hashtbl.t -> ('a * 'b) Sequence.t -> unit
  val to_hashtbl : ('a * 'b) Sequence.t -> ('a, 'b) Hashtbl.t
  val to_hashtbl2 : ('a, 'b) Sequence.t2 -> ('a, 'b) Hashtbl.t
  val of_hashtbl : ('a, 'b) Hashtbl.t -> ('a * 'b) Sequence.t
  val of_hashtbl2 : ('a, 'b) Hashtbl.t -> ('a, 'b) Sequence.t2
  val hashtbl_keys : ('a, 'b) Hashtbl.t -> 'Sequence.t
  val hashtbl_values : ('a, 'b) Hashtbl.t -> 'Sequence.t
  val of_str : string -> char Sequence.t
  val to_str : char Sequence.t -> string
  val concat_str : string Sequence.t -> string
  exception OneShotSequence
  val of_in_channel : Pervasives.in_channel -> char Sequence.t
  val to_buffer : char Sequence.t -> Buffer.t -> unit
  val int_range : start:int -> stop:int -> int Sequence.t
  val int_range_dec : start:int -> stop:int -> int Sequence.t
  val int_range_by : step:int -> int -> int -> int Sequence.t
  val bools : bool Sequence.t
  val of_set :
    (module Set.S with type elt = 'and type t = 'b) -> '-> 'Sequence.t
  val to_set :
    (module Set.S with type elt = 'and type t = 'b) -> 'Sequence.t -> 'b
  type 'a gen = unit -> 'a option
  type 'a klist = unit -> [ `Cons of 'a * 'Sequence.klist | `Nil ]
  val of_gen : 'Sequence.gen -> 'Sequence.t
  val to_gen : 'Sequence.t -> 'Sequence.gen
  val of_klist : 'Sequence.klist -> 'Sequence.t
  val to_klist : 'Sequence.t -> 'Sequence.klist
  module Set :
    sig
      module type S =
        sig
          type elt
          type t
          val empty : t
          val is_empty : t -> bool
          val mem : elt -> t -> bool
          val add : elt -> t -> t
          val singleton : elt -> t
          val remove : elt -> t -> t
          val union : t -> t -> t
          val inter : t -> t -> t
          val diff : t -> t -> t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val map : (elt -> elt) -> t -> t
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val for_all : (elt -> bool) -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val partition : (elt -> bool) -> t -> t * t
          val cardinal : t -> int
          val elements : t -> elt list
          val min_elt : t -> elt
          val min_elt_opt : t -> elt option
          val max_elt : t -> elt
          val max_elt_opt : t -> elt option
          val choose : t -> elt
          val choose_opt : t -> elt option
          val split : elt -> t -> t * bool * t
          val find : elt -> t -> elt
          val find_opt : elt -> t -> elt option
          val find_first : (elt -> bool) -> t -> elt
          val find_first_opt : (elt -> bool) -> t -> elt option
          val find_last : (elt -> bool) -> t -> elt
          val find_last_opt : (elt -> bool) -> t -> elt option
          val of_seq : elt Sequence.sequence -> Sequence.t
          val to_seq : Sequence.t -> elt Sequence.sequence
          val to_list : Sequence.t -> elt list
          val of_list : elt list -> Sequence.t
        end
      module Adapt :
        functor (X : Set.S->
          sig
            type elt = X.elt
            type t = X.t
            val empty : t
            val is_empty : t -> bool
            val mem : elt -> t -> bool
            val add : elt -> t -> t
            val singleton : elt -> t
            val remove : elt -> t -> t
            val union : t -> t -> t
            val inter : t -> t -> t
            val diff : t -> t -> t
            val compare : t -> t -> int
            val equal : t -> t -> bool
            val subset : t -> t -> bool
            val iter : (elt -> unit) -> t -> unit
            val map : (elt -> elt) -> t -> t
            val fold : (elt -> '-> 'a) -> t -> '-> 'a
            val for_all : (elt -> bool) -> t -> bool
            val exists : (elt -> bool) -> t -> bool
            val filter : (elt -> bool) -> t -> t
            val partition : (elt -> bool) -> t -> t * t
            val cardinal : t -> int
            val elements : t -> elt list
            val min_elt : t -> elt
            val min_elt_opt : t -> elt option
            val max_elt : t -> elt
            val max_elt_opt : t -> elt option
            val choose : t -> elt
            val choose_opt : t -> elt option
            val split : elt -> t -> t * bool * t
            val find : elt -> t -> elt
            val find_opt : elt -> t -> elt option
            val find_first : (elt -> bool) -> t -> elt
            val find_first_opt : (elt -> bool) -> t -> elt option
            val find_last : (elt -> bool) -> t -> elt
            val find_last_opt : (elt -> bool) -> t -> elt option
            val of_seq : elt sequence -> t
            val to_seq : t -> elt sequence
            val to_list : t -> elt list
            val of_list : elt list -> t
          end
      module Make :
        functor (X : Set.OrderedType->
          sig
            type elt = X.t
            type t
            val empty : t
            val is_empty : t -> bool
            val mem : elt -> t -> bool
            val add : elt -> t -> t
            val singleton : elt -> t
            val remove : elt -> t -> t
            val union : t -> t -> t
            val inter : t -> t -> t
            val diff : t -> t -> t
            val compare : t -> t -> int
            val equal : t -> t -> bool
            val subset : t -> t -> bool
            val iter : (elt -> unit) -> t -> unit
            val map : (elt -> elt) -> t -> t
            val fold : (elt -> '-> 'a) -> t -> '-> 'a
            val for_all : (elt -> bool) -> t -> bool
            val exists : (elt -> bool) -> t -> bool
            val filter : (elt -> bool) -> t -> t
            val partition : (elt -> bool) -> t -> t * t
            val cardinal : t -> int
            val elements : t -> elt list
            val min_elt : t -> elt
            val min_elt_opt : t -> elt option
            val max_elt : t -> elt
            val max_elt_opt : t -> elt option
            val choose : t -> elt
            val choose_opt : t -> elt option
            val split : elt -> t -> t * bool * t
            val find : elt -> t -> elt
            val find_opt : elt -> t -> elt option
            val find_first : (elt -> bool) -> t -> elt
            val find_first_opt : (elt -> bool) -> t -> elt option
            val find_last : (elt -> bool) -> t -> elt
            val find_last_opt : (elt -> bool) -> t -> elt option
            val of_seq : elt sequence -> t
            val to_seq : t -> elt sequence
            val to_list : t -> elt list
            val of_list : elt list -> t
          end
    end
  module Map :
    sig
      module type S =
        sig
          type key
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val mem : key -> 'a t -> bool
          val add : key -> '-> 'a t -> 'a t
          val singleton : key -> '-> 'a t
          val remove : key -> 'a t -> 'a t
          val merge :
            (key -> 'a option -> 'b option -> 'c option) ->
            'a t -> 'b t -> 'c t
          val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val iter : (key -> '-> unit) -> 'a t -> unit
          val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
          val for_all : (key -> '-> bool) -> 'a t -> bool
          val exists : (key -> '-> bool) -> 'a t -> bool
          val filter : (key -> '-> bool) -> 'a t -> 'a t
          val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t
          val cardinal : 'a t -> int
          val bindings : 'a t -> (key * 'a) list
          val min_binding : 'a t -> key * 'a
          val min_binding_opt : 'a t -> (key * 'a) option
          val max_binding : 'a t -> key * 'a
          val max_binding_opt : 'a t -> (key * 'a) option
          val choose : 'a t -> key * 'a
          val choose_opt : 'a t -> (key * 'a) option
          val split : key -> 'a t -> 'a t * 'a option * 'a t
          val find : key -> 'a t -> 'a
          val find_opt : key -> 'a t -> 'a option
          val find_first : (key -> bool) -> 'a t -> key * 'a
          val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
          val find_last : (key -> bool) -> 'a t -> key * 'a
          val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
          val map : ('-> 'b) -> 'a t -> 'b t
          val mapi : (key -> '-> 'b) -> 'a t -> 'b t
          val to_seq : 'Sequence.t -> (key * 'a) Sequence.sequence
          val of_seq : (key * 'a) Sequence.sequence -> 'Sequence.t
          val keys : 'Sequence.t -> key Sequence.sequence
          val values : 'Sequence.t -> 'Sequence.sequence
          val to_list : 'Sequence.t -> (key * 'a) list
          val of_list : (key * 'a) list -> 'Sequence.t
        end
      module Adapt :
        functor (M : Map.S->
          sig
            type key = M.key
            type 'a t = 'M.t
            val empty : 'a t
            val is_empty : 'a t -> bool
            val mem : key -> 'a t -> bool
            val add : key -> '-> 'a t -> 'a t
            val singleton : key -> '-> 'a t
            val remove : key -> 'a t -> 'a t
            val merge :
              (key -> 'a option -> 'b option -> 'c option) ->
              'a t -> 'b t -> 'c t
            val union :
              (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t
            val compare : ('-> '-> int) -> 'a t -> 'a t -> int
            val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
            val iter : (key -> '-> unit) -> 'a t -> unit
            val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
            val for_all : (key -> '-> bool) -> 'a t -> bool
            val exists : (key -> '-> bool) -> 'a t -> bool
            val filter : (key -> '-> bool) -> 'a t -> 'a t
            val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t
            val cardinal : 'a t -> int
            val bindings : 'a t -> (key * 'a) list
            val min_binding : 'a t -> key * 'a
            val min_binding_opt : 'a t -> (key * 'a) option
            val max_binding : 'a t -> key * 'a
            val max_binding_opt : 'a t -> (key * 'a) option
            val choose : 'a t -> key * 'a
            val choose_opt : 'a t -> (key * 'a) option
            val split : key -> 'a t -> 'a t * 'a option * 'a t
            val find : key -> 'a t -> 'a
            val find_opt : key -> 'a t -> 'a option
            val find_first : (key -> bool) -> 'a t -> key * 'a
            val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
            val find_last : (key -> bool) -> 'a t -> key * 'a
            val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
            val map : ('-> 'b) -> 'a t -> 'b t
            val mapi : (key -> '-> 'b) -> 'a t -> 'b t
            val to_seq : 'a t -> (key * 'a) sequence
            val of_seq : (key * 'a) sequence -> 'a t
            val keys : 'a t -> key sequence
            val values : 'a t -> 'a sequence
            val to_list : 'a t -> (key * 'a) list
            val of_list : (key * 'a) list -> 'a t
          end
      module Make :
        functor (V : Map.OrderedType->
          sig
            type key = V.t
            type +'a t
            val empty : 'a t
            val is_empty : 'a t -> bool
            val mem : key -> 'a t -> bool
            val add : key -> '-> 'a t -> 'a t
            val singleton : key -> '-> 'a t
            val remove : key -> 'a t -> 'a t
            val merge :
              (key -> 'a option -> 'b option -> 'c option) ->
              'a t -> 'b t -> 'c t
            val union :
              (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t
            val compare : ('-> '-> int) -> 'a t -> 'a t -> int
            val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
            val iter : (key -> '-> unit) -> 'a t -> unit
            val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
            val for_all : (key -> '-> bool) -> 'a t -> bool
            val exists : (key -> '-> bool) -> 'a t -> bool
            val filter : (key -> '-> bool) -> 'a t -> 'a t
            val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t
            val cardinal : 'a t -> int
            val bindings : 'a t -> (key * 'a) list
            val min_binding : 'a t -> key * 'a
            val min_binding_opt : 'a t -> (key * 'a) option
            val max_binding : 'a t -> key * 'a
            val max_binding_opt : 'a t -> (key * 'a) option
            val choose : 'a t -> key * 'a
            val choose_opt : 'a t -> (key * 'a) option
            val split : key -> 'a t -> 'a t * 'a option * 'a t
            val find : key -> 'a t -> 'a
            val find_opt : key -> 'a t -> 'a option
            val find_first : (key -> bool) -> 'a t -> key * 'a
            val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
            val find_last : (key -> bool) -> 'a t -> key * 'a
            val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
            val map : ('-> 'b) -> 'a t -> 'b t
            val mapi : (key -> '-> 'b) -> 'a t -> 'b t
            val to_seq : 'a t -> (key * 'a) sequence
            val of_seq : (key * 'a) sequence -> 'a t
            val keys : 'a t -> key sequence
            val values : 'a t -> 'a sequence
            val to_list : 'a t -> (key * 'a) list
            val of_list : (key * 'a) list -> 'a t
          end
    end
  val random_int : int -> int Sequence.t
  val random_bool : bool Sequence.t
  val random_float : float -> float Sequence.t
  val random_array : 'a array -> 'Sequence.t
  val random_list : 'a list -> 'Sequence.t
  val shuffle : 'Sequence.t -> 'Sequence.t
  val shuffle_buffer : int -> 'Sequence.t -> 'Sequence.t
  val sample : int -> 'Sequence.t -> 'a array
  module Infix :
    sig
      val ( -- ) : int -> int -> int Sequence.t
      val ( --^ ) : int -> int -> int Sequence.t
      val ( >>= ) : 'Sequence.t -> ('-> 'Sequence.t) -> 'Sequence.t
      val ( >|= ) : 'Sequence.t -> ('-> 'b) -> 'Sequence.t
      val ( <*> ) : ('-> 'b) Sequence.t -> 'Sequence.t -> 'Sequence.t
      val ( <+> ) : 'Sequence.t -> 'Sequence.t -> 'Sequence.t
    end
  val ( -- ) : int -> int -> int t
  val ( --^ ) : int -> int -> int t
  val ( >>= ) : 'a t -> ('-> 'b t) -> 'b t
  val ( >|= ) : 'a t -> ('-> 'b) -> 'b t
  val ( <*> ) : ('-> 'b) t -> 'a t -> 'b t
  val ( <+> ) : 'a t -> 'a t -> 'a t
  val pp_seq :
    ?sep:string ->
    (Format.formatter -> '-> unit) ->
    Format.formatter -> 'Sequence.t -> unit
  val pp_buf :
    ?sep:string ->
    (Buffer.t -> '-> unit) -> Buffer.t -> 'Sequence.t -> unit
  val to_string : ?sep:string -> ('-> string) -> 'Sequence.t -> string
  module IO :
    sig
      val lines_of :
        ?mode:int ->
        ?flags:Pervasives.open_flag list -> string -> string Sequence.t
      val chunks_of :
        ?mode:int ->
        ?flags:Pervasives.open_flag list ->
        ?size:int -> string -> string Sequence.t
      val write_to :
        ?mode:int ->
        ?flags:Pervasives.open_flag list ->
        string -> string Sequence.t -> unit
      val write_bytes_to :
        ?mode:int ->
        ?flags:Pervasives.open_flag list ->
        string -> Bytes.t Sequence.t -> unit
      val write_lines :
        ?mode:int ->
        ?flags:Pervasives.open_flag list ->
        string -> string Sequence.t -> unit
      val write_bytes_lines :
        ?mode:int ->
        ?flags:Pervasives.open_flag list ->
        string -> Bytes.t Sequence.t -> unit
    end
end