sig
  type 'a t = 'Lazy_sequence.t
  val mem : ?equal:('-> '-> bool) -> 'a t -> '-> bool
  val length : 'a t -> int
  val is_empty : 'a t -> bool
  val iter : 'a t -> f:('-> unit) -> unit
  val fold : 'a t -> init:'accum -> f:('accum -> '-> 'accum) -> 'accum
  val exists : 'a t -> f:('-> bool) -> bool
  val for_all : 'a t -> f:('-> bool) -> bool
  val count : 'a t -> f:('-> bool) -> int
  val find : 'a t -> f:('-> bool) -> 'a option
  val find_map : 'a t -> f:('-> 'b option) -> 'b option
  val to_list : 'a t -> 'a list
  val to_array : 'a t -> 'a array
  val iteri : 'a t -> f:(int -> '-> unit) -> unit
  val foldi :
    'a t -> init:'state -> f:(int -> 'state -> '-> 'state) -> 'state
  val map : 'a t -> f:('-> 'b) -> 'b t
  val mapi : 'a t -> f:(int -> '-> 'b) -> 'b t
  val filter : 'a t -> f:('-> bool) -> 'a t
  val filter_map : 'a t -> f:('-> 'b option) -> 'b t
  val filter_mapi : 'a t -> f:(int -> '-> 'b option) -> 'b t
  val fold_map :
    'a t -> init:'state -> f:('state -> '-> 'state * 'b) -> 'b t
  val filter_fold_map :
    'a t -> init:'state -> f:('state -> '-> 'state * 'b option) -> 'b t
  val concat : 'a t t -> 'a t
  val concat_seq_list : 'a t list -> 'a t
  val concat_list_seq : 'a list t -> 'a t
  val concat_map : 'a t -> f:('-> 'b list) -> 'b t
  val hd : 'a t -> 'a option
  val last : 'a t -> 'a option
  val nth : 'a t -> int -> 'a option
  val tl : 'a t -> 'a t
  val take : 'a t -> int -> 'a t
  val drop : 'a t -> int -> 'a t
  val append : 'a t -> 'a t -> 'a t
  val sub : 'a t -> pos:int -> len:int -> 'a t
  val filter_map_partial :
    'a t -> f:('-> [ `Continue of 'b option | `Stop ]) -> 'b t
  val zip_full : 'a t -> 'b t -> ('a option * 'b option) t
  val length_if_at_most : max:int -> 'a t -> int option
  val length_bounded_by : ?min:int -> ?max:int -> 'a t -> bool
  val of_list : 'a list -> 'a t
  val of_array : 'a array -> 'a t
  val init : (int -> 'a option) -> 'a t
  val read_lines : string -> string t
  val force : 'a t -> 'a t
  module Iterator :
    sig
      type 'a seq = 'a t
      type 'a t = 'Lazy_sequence.Iterator.t
      val create : 'a seq -> 'a t
      val close : 'a t -> unit
      val with_sequence : 'a seq -> f:('a t -> 'b) -> 'b
      val has_next : 'a t -> bool
      val peek : 'a t -> 'a option
      val get : 'a t -> 'a option
      val get_exn : 'a t -> 'a
      val iter : 'a t -> f:('-> unit) -> unit
      val fold : 'a t -> init:'accum -> f:('accum -> '-> 'accum) -> 'accum
      val copy : 'a t -> 'a t
    end
  val empty : 'a t
  val ( ==> ) : '-> (unit -> 'a t) -> 'a t
  val ( ==>> ) : 'a list -> (unit -> 'a t) -> 'a t
  val initialize : (unit -> 'a t) -> 'a t
  val protect : finally:(unit -> unit) -> (unit -> 'a t) -> 'a t
end