Choice Parser

|||

Write a function that accepts two parsers and returns a parser that tries the first parser for success. If that parser fails, try the second parser.

(|||) :: Parser a -> Parser a -> Parser a
P p1 ||| P p2 = P (\s -> case p1 s of v@(Just _) -> v
                                      Nothing -> p2 s)