Indeed, what a firestorm!
> I think this is a good compromise, leave System.getArgs as it is
> and have a new extension module called SystemExt (?) that would
> contain constants for argv and the environment (and leave room for
> growth for other System overflow). If it turns out that at
> some future crossroads for the Haskell libraries, argv is so
> commonly used, then move it to System. I'm happy with that.
Since the command line arguments *are* constant each time a program
is run, I'd vote for Sigbjorn's original proposal, to have a constant
System.argv :: [String]. It would probably do no harm and maybe a little
good to retain System.getArgs :: IO [String], but officially defined
in terms of System.argv. This doesn't prevent people writing code in
a parameterised style, when that is appropriate.
Maybe it's now a dead issue, but I dislike the idea of writing filters
using stdin and stdout for their I/O, and then turning round later and
demanding that stdin and stdout be redirected so that the filters
are composable. This is an example where a parameterised style is
appropriate; the filters should be functions dependent on the handles
they use.
Andy.