The parser is built using applicative style starting from a set of basic
combinators. In this example, hello is defined as an option with a
String argument, while quiet is a boolean flag (called switch).

The greet function is the entry point of the program, while opts is a
complete description of the program, used when generating a help text. The
helper combinator takes any parser, and adds a help option to it (which
always fails).

The hello option in this example is mandatory (since it doesn't have a
default value), so running the program without any argument will display a
help text:

hello - a test for optparse-applicative
Usage: hello --hello TARGET [--quiet]
Print a greeting for TARGET
Available options:
-h,--help Show this help text
--hello TARGET Target for the greeting
--quiet Whether to be quiet

containing a short usage summary, and a detailed list of options with
descriptions.