
Alastair Reid writes:
I'm just wondering, why haven't process properties (such as the command line arguments, or the parent process id), which are inherently global, been made global values in the Haskell standard? You could avoid needlessly carrying around these values, you wouldn't need to lift some functions into the IO monad...
This is true and you don't break purity and common programming tasks become a bit easier because you need less plumbing. One argument against doing so is that it will make data dependencies less obvious.
To reinforce that point: Command-line arguments and environment
variables are specific to a certain type of platform. There have been
popular consumer operating systems (the "classic" Mac OS, to name one)
that have no analogous features.
Keeping the implementation-specific features locked in the IO monad may
not be the ideal solution, but it's better than having them scattered
throughout the program.
--
David Menendez