使用Control.Applicative对Parsec非常有用,但是你需要始终隐藏<|>和类似的对象,因为它们与Parsec自己的冲突:
import Control.Applicative hiding ((<|>), many, optional)
import Text.Parsec.Combinator
import Text.Parsec
Run Code Online (Sandbox Code Playgroud)
或者,正如Antal SZ指出的那样,您可以隐藏Parsec版本.但是,据我所知,这似乎是一个不必要的限制.
为什么parsec不是简单地从Applicative实现这些运算符?
sve*_*son 19
这是出于历史原因.Parsec库早于应用仿函数的发现,因此它并未考虑到它们的设计.我想没有人花时间更新Parsec使用Control.Applicative.不这样做没有深层次的根本原因.
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |