OCamlのライブラリExtLibの中のEnumについて質問します。

以下を実行しました。

open Printf

let tee f e =
  let e' = Enum.clone e in
  f e';
  e

let term e =
  Enum.iter (fun _ -> ()) e

let f e =
  Enum.map
    (fun inp ->
       let out = inp * 2 in
       printf "in f\t%d\t%d\n" inp out;
       out)
    e

let () =
  let e = Enum.init 5 (fun i -> i) in

  e
  |> f
  |> tee
       (fun e ->
          Enum.iter (printf "in tee\t%d\n") e)
  |> term

結果は以下です。

in f    0   0
in tee  0
in f    1   2
in tee  2
in f    2   4
in tee  4
in f    3   6
in tee  6
in f    4   8
in tee  8
in f    0   0
in f    1   2
in f    2   4
in f    3   6
in f    4   8

上記のとおり、"in f"の行が全部で10行、出力されます。
期待していたのは、"in f"の行が5行、出力される動作です。

なぜ期待どおりの動作でないのかを教えてください。