[Haskell-cafe] How to use unsafePerformIO properly (safely?)