2
我正在使用Parsec 3.1.2与GHC 7.4.1来尝试编写一个有点多毛的数据文件格式的解析器。我有我认为是一个很平凡的情况,但我得到一个类型错误。我试图遵循Real World Haskell的应用函数示例。Parsec输入错误
import Text.ParserCombinators.Parsec hiding (many, optional, (<|>))
import Text.ParserCombinators.Parsec.Char
import Text.Parsec.String
import Control.Applicative
p_int = many char ' ' *> many1 digit <* many char ' '
现在,原来我得到了以下类型的错误:
Couldn't match expected type `[Char]'
with actual type `Text.Parsec.Prim.ParsecT s0 u0 m0 [a0]'
In the return type of a call of `many1'
In the second argument of `(*>)', namely `many1 digit'
In the first argument of `(<*)', namely
`many char ' ' *> many1 digit'
基于Trivial parsec example produces a type error我尝试添加了NoMonomorphismRestriction
语言编译,但是这并没有帮助。
我承认,尽管我有一点Haskell的经验,但我发现Parsec的学习曲线相当陡峭。它没有帮助的真实世界哈斯克尔书上的例子是基于秒差距2.
D'哦,我应该抓住这一点。事实上,这确实解决了问题,并将它推向别处。我会为此提出一个单独的问题。 –