[Haskell] Why is getArgs in the IO monad?