
Alastair Reid wrote:
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.
An ironic historical footnote here: Back in the ancient days, only hbc provided access to command line arguments and environment variables, and it did so through a global. The argument on this subject happened back then, too (in the early days of the Haskell mailing list!). I have no idea if there are archives from back then... -Jan-Willem Maessen