Lazy I/O is widely regarded as a mistake, I don't really know any Haskell programmers that advocate that anymore. We have plenty of other approaches that have a better foundation.
And those libraries aren't just "hacks" to deal with laziness or purity. They're wonderful APIs for writing constant-memory streaming programs. I always wish other languages had libraries on their level.