[Haskell-cafe] CmdArgs non-flag arguments with newtypes

wren ng thornton wren at freegeek.org
Wed Jul 24 05:48:58 CEST 2013

On 7/23/13 9:01 PM, Michael Orlitzky wrote:
> Obviously not what I want! Has anyone
> else run into this? Figured out a workaround?

I haven't run into this specific problem, but I do have a sort of
workaround. Whenever dealing with CmdArgs (or any similar system) I
typically define *two* record types.

The first one just gets the raw input from CmdArgs; no more, no less.
Thus, for your issue, this record would use String. For other issues
mentioned recently about optionality, this record would use Maybe.

The second one is the one actually used by the program as the
configuration object. This one is generated from the first by performing
various sanity checks, filling in defaults, converting types from their
CmdArgs version to the version I actually want, etc.

IME, regardless of language, trying to conflate these notions of an
external-facing parser-state and an internal-facing configuration-record
just causes problems and accidental complexity. It's best to keep them
separate IMO.

Live well,

More information about the Haskell-Cafe mailing list