Auto-generate a command-line parser for your datatype

Version on this page:1.4.5
LTS Haskell 18.14:1.4.6
Stackage Nightly 2021-10-26:1.4.6
Latest on Hackage:1.4.6

See all snapshots optparse-generic appears in

BSD-3-Clause licensed by Gabriel Gonzalez
Maintained by Gabriel439@gmail.com
This version can be pinned in stack with:optparse-generic-1.4.5@sha256:2ec0452b1d8a0f6183f9905778a72f0775de6862d970be8b597b4e61e2abd982,1738

Module documentation for 1.4.5

This library auto-generates an optparse-applicative-compatible Parser from any data type that derives the Generic interface.

See the documentation in Options.Generic for an example of how to use this library




  • readIntegralBounded: use metavar in error message


  • Export internal readIntegralBounded utility
  • Build against optparse-applicative-


  • New unwrap function
    • This is the underlying utility that powers unwrap{Record,RecordPure,WithHelp}


  • Fix broken haddocks


  • BREAKING CHANGE: Add support for type-level default values
    • This is a breaking change because the various parse* typeclass methods now take an additional argument to support this feature


  • Export GenericParseRecord and getRecord{,PureWith}


  • BREAKING CHANGE: New metavar method for ParseField class
    • This field simplifies customizing ParseField instances
      • Now you usually only need to override metavar now or possibly also readField, whereas the default behavior for parseField should work more often
    • This is only a breaking change for data types that use the default implementation of ParseField but do not derive Typeable
    • You can migrate existing code that doesn’t compile by just explicitly specifying what the metavar field should be