add Iterable.reduce()