Enum

`sig type 'a t val iter : ('a -> unit) -> 'a Enum.t -> unit val iter2 : ('a -> 'b -> unit) -> 'a Enum.t -> 'b Enum.t -> unit val fold : ('a -> 'b -> 'b) -> 'b -> 'a Enum.t -> 'b val fold2 : ('a -> 'b -> 'c -> 'c) -> 'c -> 'a Enum.t -> 'b Enum.t -> 'c val iteri : (int -> 'a -> unit) -> 'a Enum.t -> unit val iter2i : (int -> 'a -> 'b -> unit) -> 'a Enum.t -> 'b Enum.t -> unit val foldi : (int -> 'a -> 'b -> 'b) -> 'b -> 'a Enum.t -> 'b val fold2i : (int -> 'a -> 'b -> 'c -> 'c) -> 'c -> 'a Enum.t -> 'b Enum.t -> 'c val find : ('a -> bool) -> 'a Enum.t -> 'a val is_empty : 'a Enum.t -> bool val peek : 'a Enum.t -> 'a option val get : 'a Enum.t -> 'a option val next : 'a Enum.t -> 'a val push : 'a Enum.t -> 'a -> unit val junk : 'a Enum.t -> unit val clone : 'a Enum.t -> 'a Enum.t val force : 'a Enum.t -> unit val map : ('a -> 'b) -> 'a Enum.t -> 'b Enum.t val mapi : (int -> 'a -> 'b) -> 'a Enum.t -> 'b Enum.t val filter : ('a -> bool) -> 'a Enum.t -> 'a Enum.t val filter_map : ('a -> 'b option) -> 'a Enum.t -> 'b Enum.t val append : 'a Enum.t -> 'a Enum.t -> 'a Enum.t val concat : 'a Enum.t Enum.t -> 'a Enum.t exception No_more_elements val empty : unit -> 'a Enum.t val make : next:(unit -> 'a) -> count:(unit -> int) -> clone:(unit -> 'a Enum.t) -> 'a Enum.t val from : (unit -> 'a) -> 'a Enum.t val init : int -> (int -> 'a) -> 'a Enum.t val count : 'a Enum.t -> int val fast_count : 'a Enum.t -> bool end`