let partition s ~f = fold_range ~f:(partition_range f) s ~init:(empty, empty)