
Hi Kashyap, I'm responding only now because I just saw this thread on reddit. You wrote:
it is clear that String for IO is a bad idea - I wonder if examples of String based readFile etc for beginners is a good idea
It's not always a bad idea. Especially for beginners. Conceptually, String is the simplest, and often the performance isn't so bad. For serious applications, though, you should use the text library. One thing you should never use for text is ByteString - that is for binary data, not text. Lazy IO is also OK in simple cases. But as you have seen, for real applications you need to be aware of its limitations. When there is interleaving of IO operations between multiple resources, the simplicity of lazy IO disappears very quickly. In those cases, you should consider alternative IO libraries, such as conduit and pipes. Regards, Yitz