let redo t =
  match t.f_data with
    [] -> raise No_more
  | x :: q ->
      let t = { data = x :: t.data ; f_data = q } in
      (x, t)