An option modifier.
Option modifiers are values that represent a modification of the
properties of an option.
The type parameter
a is the return type of the option, while
f is a record containing its properties (e.g.
OptionFields for regular options,
FlagFields for flags,
etc...).
An option modifier consists of 3 elements:
- A field modifier, of the form f a -> f a. These are
essentially (compositions of) setters for some of the properties
supported by f.
- An optional default value and function to display it.
- A property modifier, of the form OptProperties ->
OptProperties. This is just like the field modifier, but for
properties applicable to any option.
Modifiers are instances of
Monoid, and can be composed as such.
One rarely needs to deal with modifiers directly, as most of the times
it is sufficient to pass them to builders (such as
strOption or
flag) to create options (see
Builder).