Command line parsing using Monads, State, and Applicative.