empty is the failure value for Alternative choice. As the identity element of (<|>), it always fails without consuming input, so another alternative can be tried. section 12.1.4
An empty parser alternative
A custom Parser defines empty as Parser $ \_ -> Left "empty alternative". Combined with (<|>), a failed parser retries from the original input; if every alternative fails, the errors are combined.
