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