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