Использование Control.Applicative
очень полезно с Parsec, но вам нужно всегда скрывать <|>
и подобные объекты, поскольку они конфликтуют с Parsec own:
import Control.Applicative hiding ((<|>), many, optional)
import Text.Parsec.Combinator
import Text.Parsec
В качестве альтернативы, как указывает Antal S-Z, вы можете скрыть версию Parsec. Однако, насколько я могу судить, это кажется ненужным ограничением.
Почему parsec не просто реализовал эти операторы из Application?