A base class for parser results. A result is either successful or not
(failure may be fatal, i.e., an Error, or not, i.e., a Failure). On
success, provides a result of type T which consists of some result
(and the rest of the input).
a function that takes the same argument as f and
produces an error message to explain why f wasn't applicable
(it is called when this is the case)
f
the partial function to be lifted over this result
Returns:
if f f is defined at the result in this ParseResult, f
applied to the result of this ParseResult, packaged up as
a new ParseResult. If f is not defined, Failure.