sig
  type +'a t
  val empty : unit -> 'Enum.t
  val of_list : 'a list -> 'Enum.t
  val collapse : 'Enum.t Call.t -> 'Enum.t
  val iter : ('-> unit) -> 'Enum.t -> unit Call.t
  val iter_s : ('-> unit Call.t) -> 'Enum.t -> unit Call.t
  val iter_p : ('-> unit Call.t) -> 'Enum.t -> unit Call.t
  val map : ('-> 'b) -> 'Enum.t -> 'Enum.t
  val map_s : ('-> 'Call.t) -> 'Enum.t -> 'Enum.t
  val map_p : ('-> 'Call.t) -> 'Enum.t -> 'Enum.t
  val fold : ('-> '-> 'a) -> '-> 'Enum.t -> 'Call.t
  val append : 'Enum.t -> 'Enum.t -> 'Enum.t
  val concat : 'Enum.t Enum.t -> 'Enum.t
  val filter : ('-> bool) -> 'Enum.t -> 'Enum.t
  val filter_s : ('-> bool Call.t) -> 'Enum.t -> 'Enum.t
  val filter_map : ('-> 'b option) -> 'Enum.t -> 'Enum.t
  val find : ('-> bool) -> 'Enum.t -> 'a option Call.t
end