Command line option parsers
Revision as of 18:33, 6 October 2013 by AriePeterson (talk | contribs) (Update properties of package console-program)
There are several packages that want to simplify the task of writing command line parsers. Unfortunately, they are distributed across several Hackage categories. Here is an attempt to list them:
Package | Multi-mode | Extensions | Remark |
---|---|---|---|
cmdargs | X | TemplateHaskell, SYB generics, ViewPatterns, ... | unsafePerformIO
|
cmdlib | X | SYB generics | based on GetOpt |
cmdtheline | X | FlexibleInstances (although unnecessary) | shows help as man-page |
console-program | X | (none) | configure options via files |
getflag | - | Haskell98 | like GetOpt but with Unix/Plan 9 option syntax |
hflags | - | TemplateHaskell | inspired by Google's gflags, provides parsed options in top-level variables, allow to set options via environment variables |
multiarg | - | CPP | long options with multiple arguments |
options | X | TemplateHaskell | |
optparse-applicative | X | GADT | Applicative Functor |
parseargs | - | FlexibleInstances (although unnecessary) | supports a fixed set of argument types: Int, Integer, Float, Double, String, FileOpener
|
ReadArgs | - | OverlappingInstances, TypeOperators | No options, only arguments. The argument template is derived from the requested argument tuple. |
simpleargs | - | OverlappingInstances (although unnecessary) | the same as ReadArgs |
yaop | - | TemplateHaskell, GeneralizedNewtypeDeriving | wrapper around GetOpt |
argparser | - | None (though it depends on package containers, which uses extensions) |
The column for required Haskell extensions gives an idea of how easy it is to port the package to compilers other than GHC.