[Haskell] Definitions of purity and Lazy IO