История изменений
Исправление NegatiV, (текущая версия) :
Тут философский вопрос: стоит ли filter/map/reduce/... явным образом прибивать к итераторам. На мой взгляд, итератору ничего кроме hasNext()/next() иметь не нужно, а всю эту функциональщину лучше вытащить в extension methods/implicit conversions/functional interface. Никто не запрещает в итоге использовать в реализации filter/map/reduce итераторы (если они есть у типа). Хотя тут вот привели хороший пример когда это полезно.
Исходная версия NegatiV, :
Тут философский вопрос: стоит ли filter/map/reduce/... явным образом прибивать к итераторам. На мой взгляд, итератору ничего кроме hasNext()/next() иметь не нужно, а всю эту функциональщину лучше вытащить в extension methods/implicit conversions/functional interface. Никто не запрещает в итоге использовать в реализации filter/map/reduce итераторов (если они есть у класса). Хотя тут вот привели хороший пример когда это полезно.