commander (hackage): An extensible, format-agnostic command parsing library designed to be easy to use and syntactically light weight.  Assuming we write a parser to convert a command such as  Into path and flags such as ["calculator", "add"] and Map.fromList [("v","yes")], This library will then match said path and flags against a nested record type of commands built up using lightweight monadic syntax and tries to execute the associated function if the matching and value converting works, or returns an error if the path/flags fail to match any command.  To get started, see the documentation for the Commander module below. Additionally, an examples folder is included in the source illustrating usage - see https://github.com/jsdw/hs-commander for more.
Keywords: bsd3|library|program|text