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.