sub gen_reduce (&compare, ?$initial)