more stuff about efficient io in haskell