ReadArgs
Version 1.0 revision 0 uploaded by NoahEasterly.
Package meta
- Synopsis
- Simple command line argument parsing
- Description
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.For example
(a :: Int, b :: String, c :: Float) <- readArgs
would parse the first runtime argument as anInt
, the second as aString
(no quotes required) and the third as aFloat
.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 program named
Example
, the error message for the above action would be:usage: Example Int String Float
Any type that has both
Typeable
andRead
instances can be used. BothChar
andString
are handled specially so that command line arguments for both do not require quotes (as theirRead
instances do).readArgs
also supports optional arguments and variadic arguments. Optional arguments are specified usingMaybe
, 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
But not
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 (so
Example 1 2 3 4
was parsed as(1, "2", [3.0,4.0])
. They may both be made non-greedy through use of theNonGreedy
constructor:( a :: Int , NonGreedy b :: NonGreedy Maybe String , NonGreedy c :: NonGreedy [] Float ) <- readArgs
- Author
- Noah Luck Easterly
- Bug reports
- n/a
- Category
- Command Line
- Copyright
- n/a
- Homepage
- http://github.com/rampion/ReadArgs
- Maintainer
- noah.easterly@gmail.com
- Package URL
- n/a
- Stability
- n/a