[Haskell-beginners] Unix-style command line arguments and file input?

Vale Cofer-Shabica vale.cofershabica at gmail.com
Tue May 5 17:43:48 UTC 2015


Hello all,

Punchline first: What's the "best practice" way of doing unix-style
command line argument and file input processing in Haskell?

Background:
I'm using Haskell to write programs that act like well-behaved,
pipe-friendly unix tools. i.e., the following are all equivalent:

% ./prog file
% ./prog < file
% cat file | ./prog

Thus far, I've done this by directly inspecting the first element of
System.Environment.getArgs, which has been fine thus far.

I'd also like to be able to take simple command line arguments
(boolean flags and numeric parameters) and the above doesn't adapt
well to that case. I'd like to do this in the idiomatic, "standard"
way (a la getopt() in C). Browsing through the wiki page on command
line argument parsers [1] gave me a bewildering array of options. I'm
not really sure where to start, though I remember reading a blanket
endorsement of optparse-applicative somewhere.

Any pointers or examples that address my use-case would be much appreciated.

-vale

[1]: https://wiki.haskell.org/Command_line_option_parsers


More information about the Beginners mailing list