Haskell 中的类型分辨率:MegaParsec/ 解析单个 space

Type Resolution in Haskell: MegaParsec/ Parsing a single space

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

但是,如果我真的尝试:

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

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

ghci 建议类型 (Token s ~ Char, MonadParsec e s f) => f ()。那一个应该工作。 Parser 这个名字是从哪里得到的?

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