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)