首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parsec类型错误

Parsec类型错误
EN

Stack Overflow用户
提问于 2012-05-24 01:33:36
回答 1查看 272关注 0票数 2

我正在使用Parsec 3.1.2和GHC 7.4.1来尝试为一种有点复杂的数据文件格式编写解析器。我有一个我认为是相当琐碎的例子,但是我得到了一个类型错误。我正在尝试遵循来自Real World Haskell的应用函数器示例。

代码语言:javascript
复制
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 ' '

现在,最初我得到了以下类型错误:

代码语言:javascript
复制
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语言杂注,但这没有帮助。

我承认,我发现Parsec的学习曲线相当陡峭,尽管我有一点Haskell经验。现实世界的Haskell书中的例子都是基于Parsec 2的,这并没有什么帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-24 01:38:41

您正在编写以下代码:

代码语言:javascript
复制
many char ' '

这将向many函数传递两个参数:char' '。您想要做的是将char ' '的结果传递给many函数,这是这样完成的:

代码语言:javascript
复制
many (char ' ')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10725031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档