haskell - ¿Por qué Parsec no usa Control? Operadores de aplicación
(1)
Es por razones históricas. La biblioteca Parsec es anterior al descubrimiento de los funtores aplicativos y, por lo tanto, no fue diseñada pensando en ellos. Y supongo que nadie se ha tomado el tiempo de actualizar Parsec para usar Control.Applicative
. No hay una razón fundamental profunda para no hacerlo.
El uso de Control.Applicative
es muy útil con Parsec, pero siempre debe ocultar <|>
y objetos similares ya que entran en conflicto con los de Parsec:
import Control.Applicative hiding ((<|>), many, optional)
import Text.Parsec.Combinator
import Text.Parsec
Alternativamente, como señala Antal SZ, puede ocultar la versión de Parsec. Sin embargo, por lo que puedo decir, esto parece una restricción innecesaria.
¿Por qué parsec no simplemente implementó estos operadores de Applicative?