- getArgs :: IO [String]
It can get several params, but its type declaration
looks like it gets
none.
It doesn't get any Haskell parameters; it retrieves OS-level
(not Haskell-level) parameters to the program. If you know
Perl, it's the difference between @_ and @ARGV; if Python, the
difference between local parameters and sys.argv. You might
infer from the fact that other languages also distinguish, that
there is an actual difference between function parameters and
program parameters; if you are not clear on this, you will need
to figure it out regardless of the language you're working with.
Perhaps the confusion comes from the fact that languages such as C
or Java treat the program parameters as function arguments to main.
Position which is not completely non-sensical when calls such as
exec() exist, but I'd rather that they divide the OS-level arguments
from the language-level ones: they are different after all.