A functional language shouldn't modify the iterator, but instead keep advancing. As we can't stop in any particular point, we still just use a stream.