Template for flag-creation functions
rest f: a flag that signals the end of flag processing. all remaining arguments
are passed to the f
rest f: a flag that signals the end of flag processing. all remaining arguments
are passed to the f
lift t ~project transforms a flag with accumulator type 'a
into a flag with a more informative accumulator type 'b
provided that project x returns a pair consisting of
1. a 'a-value extracted from the 'b-value x, and
2. a function for rebuilding a modified 'b-value from
the modified 'a-value resulting from processing the flag.
The intended use pattern for lift is when 'b is a record type
with a field foo of type 'a and project is
fun r -> (r.foo, (fun foo' -> { r with foo = foo' }))