ReadArgs
Version 1.2.3 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.Char
,String
, andText
are handled specially so that command line arguments for both do not require quotes (as theirRead
instances do). A special instance is provided forFilePath
so that no constructor or quotes are required.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