+ (Left e1, rest) = case runParser p2 i of
+ (Right r, rest) = (Right r, rest)
+ (Left e2, rest) = (Left (e1+e2), rest)
+
+<?> :: (Parser a b) String -> Parser a b
+<?> p e = Parser \i -> case runParser p i of
+ (Left e1, rest) = (Left (e1+(Expected [e])), rest)
+ (Right r, rest) = (Right r, rest)