(<++>) :: Parser [a] -> Parser [a] -> Parser [a]
u <++> v = (++) <$> u <*> v
(<:>) :: Parser a -> Parser [a] -> Parser [a]
u <:> v = (:) <$> u <*> v
(<~:>) :: Parser (Maybe a) -> Parser [a] -> Parser [a]
u <~:> v = do
p <- u
case p of {
Just x -> return x <:> v
; Nothing -> v }