Let (<|>) (which equals option) return all parses of the succeeding parser,
as seems to be implied by the description in the chapter on Parsing.
Example: parse (empty <|> ((unit 'a') `combine` (unit 'b'))) ""
The text doesn't mention ambigous parses, and the code didn't handle them.
The easiest way to fix the code without necessarily having to write about
this case is to hande it as parse error and merge it with the no parse case
by replacing the [] pattern with _.