sig
  type 'a t
  val next : 'a Iter.t -> 'a option
  val next_exn : 'a Iter.t -> 'a
  val progress : 'a Iter.t -> float option
  val progress_string : float option -> string
  val i : 'a Iter.t -> f:('a -> unit) -> unit
  val concat : 'a Iter.t list -> 'a Iter.t
  val reduce : 'a Iter.t -> init:'i -> f:('i -> 'a -> 'i) -> 'i
  val map : 'a Iter.t -> f:('a -> 'b) -> 'b Iter.t
  val fold : 'a Iter.t -> init:'i -> f:('i -> 'a -> 'i) -> 'i
  val unfold : init:'i -> f:('i -> 'a * 'i) -> stop:'i -> 'a Iter.t
  val find : 'a Iter.t -> f:('a -> bool) -> 'a
  val filter : 'a Iter.t -> f:('a -> bool) -> 'a Iter.t
  val for_all : 'a Iter.t -> f:('a -> bool) -> bool
  val exists : 'a Iter.t -> f:('a -> bool) -> bool
  val t :
    ?progress:(unit -> float option) -> (unit -> 'a option) -> 'a Iter.t
  val empty : 'a Iter.t
  val of_opt : 'a option -> 'a Iter.t
  val of_list : 'a list -> 'a Iter.t
  val to_list : 'a Iter.t -> f:('a -> 'b) -> 'b list
  val to_list_opt : 'a Iter.t -> f:('a -> 'b option) -> 'b list
  val of_array : 'a array -> 'a Iter.t
  val to_array : 'a Iter.t -> f:('a -> 'b) -> 'b array
  val to_array_opt : 'a Iter.t -> f:('a -> 'b option) -> 'b array
  val channel_progress :
    ?total:int64 -> Pervasives.in_channel -> unit -> float option
  val of_channel :
    ?total:int64 ->
    Pervasives.in_channel -> f:(Pervasives.in_channel -> 'a) -> 'a Iter.t
  val channel :
    Pervasives.in_channel -> f:(Pervasives.in_channel -> unit) -> unit
end