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