Well, I'd say most of the time... Where I find laziness (or "laziness implemented via iterators") worthwhile is when working with collections. But I much prefer the bits that care about such thing to explicitly return an iterator, the bits which don't to be able to operate either on iterators or concrete collections, and me to have a better idea of how much space and time will be consumed.