[Haskell-beginners] "pure" versus "impure" code