more stuff on I/O in haskell