export default function reduceIterable( iterable: Iterable, reducer: (intermediate: U, item: T) => U, initial: U ): U { let intermediate = initial; for (const item of iterable) { intermediate = reducer(intermediate, item); } return intermediate; }