ReadArgs: Simple command line argument parsing

[ bsd3, command-line, library, program ] [ Propose Tags ]

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 an Int, the second as a String (no quotes required) and the third as a Float.

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 and Read instances can be used. Both Char and String are handled specially so that command line arguments for both do not require quotes (as their Read instances do).

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

But not

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 the NonGreedy constructor:

( a :: Int
, NonGreedy b :: NonGreedy Maybe String
, NonGreedy c :: NonGreedy [] Float
) <- readArgs
Versions [RSS] [faq] 1.0, 1.1, 1.2, 1.2.1, 1.2.2, 1.2.3
Dependencies base (>= && <5) [details]
License BSD-3-Clause
Author Noah Luck Easterly
Category Command Line
Home page
Source repo head: git clone git://
Uploaded by NoahEasterly at 2011-12-27T15:48:41Z
Distributions Debian:1.2.3, FreeBSD:1.2.2, NixOS:1.2.3
Executables ReadArgsEx
Downloads 20205 total (94 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]




Maintainer's Corner

For package maintainers and hackage trustees