在Haskell中键入Resolution:MegaParsec /解析单个空格

时间:2018-01-08 15:21:53

标签: haskell megaparsec

如果我使用void spaceChar查看documentation for space建议。

但是,如果我真的尝试:

x :: Parser ()
x = void spaceChar

我得到了

* Couldn't match type `Token s0' with `Char'
    arising from a use of `spaceChar'
  The type variable `s0' is ambiguous
* In the first argument of `void', namely `spaceChar'
  In the expression: void spaceChar
  In an equation for `x': x = void spaceChar

我认为表达式是正确的,但我需要做些什么来说服类型检查器。我如何让它工作?

2 个答案:

答案 0 :(得分:1)

ghci建议使用(Token s ~ Char, MonadParsec e s f) => f ()类型。那一个应该工作。你在哪里得到了名字Parser

答案 1 :(得分:0)

我在尝试制作复制品的同时追踪了这个问题。问题有点深奥:我没有导入Control.Monad。相反,看起来像是在其他地方(不确定在哪里)拾取了void,而void的这个定义导致了该错误的发生。感谢所有试图提供帮助的人。