[Haskell-cafe] Being impure within a 'pure' function