If you want to do raw IO and repackage it as "pure", you can use `unsafePerformIO` and friends. It is important to use the `NOINLINE` pragma in that case. -- Jason Dusek |...unsafePerformIO...| http://haskell.org/ghc/docs/latest/html/libraries/base/System-IO-Unsafe.html#v%3AunsafePerformIO