More complete Enumerable#inject