title: Difference between iterators, enumerations and sequences
body: <p>I want to understand what is the difference between iterators, enumerations and sequences in ocaml </p>
  
  <pre><code>enumeration:
  type 'a t = {
    mutable count : unit -&gt; int; (** Return the number of remaining elements       in the enumeration. *)
    mutable next  : unit -&gt; 'a;  (** Return the next element of the   enumeration or raise [No_more_elements].*)
    mutable clone : unit -&gt; 'a t;(** Return a copy of the enumeration. *)
    mutable fast  : bool;        (** [true] if [count] can be done without reading all elements, [false] otherwise.*)
  }
  sequence:
  
  type 'a node =
  | Nil
  | Cons of 'a * 'a t
  and 'a t = unit -&gt; 'a node
  </code></pre>
  
  <p>I don't have any idea about iterators</p>