The 'options' package lets library and application developers easily work with command-line options.
The following example is a full program that can accept two options, '--message' and '--quiet':
' import Control.Applicative import Options
data MainOptions = MainOptions   { optMessage :: String   , optQuiet :: Bool   }
instance 'Options' MainOptions where   defineOptions = pure MainOptions   <> simpleOption "message" "Hello world!"   "A message to show the user."   <> simpleOption "quiet" False   "Whether to be quiet."
main :: IO () main = runCommand $ \opts args -> do   if optQuiet opts   then return ()   else putStrLn (optMessage opts) '
>$ ./hello >Hello world! >$ ./hello --message='ciao mondo' >ciao mondo >$ ./hello --quiet >$
In addition, this library will automatically create documentation options such as '--help' and '--help-all':
>$ ./hello --help >Help Options: > -h, --help > Show option summary. > --help-all > Show all help options. > >Application Options: > --message :: text > A message to show the user. > default: "Hello world!" > --quiet :: bool > Whether to be quiet. > default: false.