let repeat n f a = let rec inner made a = if made >= n then `Ok a else (match f a with | `Ok a -> inner (made + 1) a | `Error e -> `Error ((e, made))) in inner 0 a