Yes, I think about a value of `'a Enum.t` as basically being a function `{private mutable 'state}->'a`.  I'm not sure I follow your point about automata (unless you're thinking about mealy machines, in which case it's more like `'state -> 'state * 'a`, which is another way to think about an `'a Enum.t` with private state).  

The composition and cloning of `Enum`s might be much better with exposed state, although my OCaml type-fu is weak, and I don't know how to hide the type of the internal state nicely to implement this with a clean interface like all the current iterator types.