Implementation of our command line parsing combinators
Given the above data type we can easily implement the desired operations
parse :: P a -> [String] -> Either ErrorMessage a
- Traverse and translate to conventional parsing combinators
usage :: P a -> String
- Traverse and pretty print
- Because of the existential quantification in the data type,
polymorphic recursion is required to type these traversal
functions, so type signatures have to be given explicitly.
- See the source code.