Which you need to prefix to avoid clashes.
> If they are exclusive, you can construct a type for them.
Which is going to end up being a record, which:
- is awkward to build (compared to just giving options to a command or arguments to a function)
- will most likely need to be an instance of Default
- which needs to have its fields prefixed to avoid clashes
Starts to sound like an awful amount of boilerplate.