It's for historic reasons. The Parsec library predates the discovery of applicative functors and so it wasn't designed with them in mind. And I guess no one has taken the time to update Parsec to use Control.Applicative
. There is no deep fundamental reason for not doing it.
Why does Parsec not use Control.Applicative operators
-
31-03-2022 - |
Question
Using Control.Applicative
is very useful with Parsec, but you need to always hide <|>
and similar objects as they conflict with Parsec's own:
import Control.Applicative hiding ((<|>), many, optional)
import Text.Parsec.Combinator
import Text.Parsec
Alternatively, as Antal S-Z points out, you can hide the Parsec version. However, as far as I can tell, this seems like an unnecessary restriction.
Why did parsec not simply implement these operators from Applicative?
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow