more stuff on I/O
lazy evaluation of IO in haskell