Подтвердить что ты не робот

Почему Parsec не использует операторы Control.Applicative

Использование Control.Applicative очень полезно с Parsec, но вам нужно всегда скрывать <|> и подобные объекты, поскольку они конфликтуют с Parsec own:

import Control.Applicative hiding ((<|>), many, optional)
import Text.Parsec.Combinator
import Text.Parsec

В качестве альтернативы, как указывает Antal S-Z, вы можете скрыть версию Parsec. Однако, насколько я могу судить, это кажется ненужным ограничением.

Почему parsec не просто реализовал эти операторы из Application?

4b9b3361

Ответ 1

Это по историческим причинам. Библиотека Parsec предшествует открытию аппликативных функторов, и поэтому она не была разработана с их учетом. И я думаю, никто не нашел времени, чтобы обновить Parsec, чтобы использовать Control.Applicative. Нет глубокой фундаментальной причины не делать этого.