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 的定义导致了那个错误的发生。感谢所有试图提供帮助的人。
如果我查看 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 的定义导致了那个错误的发生。感谢所有试图提供帮助的人。