The ReadArgs package
ReadArgs provides the
readArgs IO action, which lets you tell the compiler
to parse the command line arguments to fit the type signature you give.
(a :: Int, b :: String, c :: Float) <- readArgs would
parse the first runtime argument as an
Int, the second as a
quotes required) and the third as a
If the runtime arguments are incompatible with the type signature, then a simple usage statement is given of the types needed.
Continuing the previous example, if it was used in a
Example, the error message for the above
action would be:
usage: Example Int String Float
Any type that has both
can be used.
Text are handled specially so that
command line arguments for both do not require quotes (as their
Read instances do). A special instance is provided for
that no constructor or quotes are required.
readArgs also supports optional arguments and variadic arguments.
Optional arguments are specified using
Maybe, and variadic arguments
using a list.
(a :: Int, b :: Maybe String, c :: [Float]) <- readArgs
would successfully parse any of the following sets of command line arguments:
Example 1 Example 1 2 3 4 Example 1 foo Example 1 foo 2 3 4
Example Example foo Example 1.0
Usage statements for optional and variadic arguments use command-line parlance:
usage: Example Int [String] [Float..]
Note that both optional and variadic parsers are greedy by default
Example 1 2 3 4 was parsed as
(1, "2", [3.0,4.0]). They
may both be made non-greedy through use of the
( a :: Int , NonGreedy b :: NonGreedy Maybe String , NonGreedy c :: NonGreedy  Float ) <- readArgs
|Versions||1.0, 1.1, 1.2, 1.2.1, 1.2.2, 1.2.3|
|Dependencies||base (>=18.104.22.168 && <5), system-filepath (>=0.4.7 && <0.5), text (>=0.11.1.13 && <12) [details]|
|Author||Noah Luck Easterly|
|Source repository||head: git clone git://github.com/rampion/ReadArgs.git|
|Uploaded||Thu Dec 8 18:45:52 UTC 2016 by NoahEasterly|
|Distributions||Debian:1.2.2, FreeBSD:1.2.2, LTSHaskell:1.2.3, NixOS:1.2.3, Tumbleweed:1.2.3|
|Downloads||14966 total (84 in the last 30 days)|
|Rating||(no votes yet) [estimated by rule of succession]|
|Status||Docs available [build log]
Last success reported on 2016-12-08 [all 1 reports]
Hackage Matrix CI
For package maintainers and hackage trustees