为什么Parsec不使用Control.Applicative运算符

时间:2013-04-02 15:23:28

标签: haskell parsec

使用Control.Applicative对Parsec非常有用,但是你需要始终隐藏<|>和类似的对象,因为它们与Parsec自己的对象冲突:

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

或者,正如Antal S-Z指出的那样,你可以隐藏Parsec版本。但是,据我所知,这似乎是一个不必要的限制。

为什么parsec不是简单地从Applicative实现这些运算符?

1 个答案:

答案 0 :(得分:19)

这是出于历史原因。 Parsec库早于应用仿函数的发现,因此它并未考虑到它们的设计。我想没有人花时间更新Parsec以使用Control.Applicative。不这样做没有深层次的根本原因。