Adding to this: using laziness compared to a while loop in cases where you will process the whole array is just pure overhead.
Heck, testing now on 3.4.4 a while loop is faster than using each. Summing a million numbers (to make the overhead of the different approaches as clear as possible) shows that a while loop is almost 2x faster.
This is what my complaint is about. Why is the fast path so painful to use in so many languages?