[Haskell-cafe] Hiding side effects in a data structure