many :: forall p a. (Syntax p) => p a -> p [a]
many p =    nil <$> pure ()
        <|> cons <$> p <*> many p
many :: forall p a. (Syntax p) => p a -> p [a]
many p =    nil <$> pure ()
        <|> cons <$> p <*> many p
many p =    nil <$> pure ()
        <|> cons <$> p <*> many p