[Haskell-beginners] comprehending monad execution