2020-09-14: Renamed "args_af" to "meap"

I renamed my work-in-progress command-line argument parsing library from “args_af” to “meap”. Meap stands for Minimal Extensible Argument Parser. It’s minimal in the sense that it has no external dependencies and CLOCs in at a little over 1000 lines of rust. It’s extensible in the sense that the Parser trait defined in the library can be implemented by types from 3rd party code to create custom combinators. A second trait, SingleArgParser, can be used to implement custom basic arguments.

The main reason for the rename is the “AF” in “args_af” stood for “Applicative Functor”, which is a term often found in “functional programming” literature to describe types which a function of multiple arguments may be (essentially) mapped. An argument parser is an applicative functor because it’s possible to take a pair of separate parsers and combine them into a single parser which yields a pair of values (both), AND it’s possible to take a parser yielding values of some type, and a function from that type to some other type, and combine them into a new parser which yields values of the new type (map). To technically qualify as an applicative functor there would need to be a way to take a value and build from it a parser that yields that value (pure in the literature), but there doesn’t seem to be any point in actually including this function in meap. The apply function that’s normally used to define applicative functors is left out as it can be implement in terms of pure, map, and both, and is frankly less useful in this domain.

While the fact that an argument parser is an applicative functor is an interesting observation, it’s of little practical use to anyone who just wants to parse arguments. I expect may programmers have never encountered the term before, and I’d sure feel uncomfortable using a library with an unfamiliar acronym in its name.

I also initially found it hilarious to say that my library was “Args AF!”, but it got old pretty fast and some potential users may find it off-putting.