1

在 GHCi 提示符下,

我有能力,

Prelude Text.Parsec> :t (oneOf "aeiou")

并得到(oneOf "aeiou") :: Stream s m Char => ParsecT s u m Char

但当我这样做时,

let s = oneOf "aeiou"

我收到以下错误,

interactive>:36:9:
    No instance for (Stream s0 m0 Char)
      arising from a use of `oneOf'
    Possible fix: add an instance declaration for (Stream s0 m0 Char)
    In the expression: oneOf "aeiou"
    In an equation for `m': m = oneOf "aeiou"

有人可以告诉我为什么我不能分配给 s 吗?

4

1 回答 1

6

这就是作用中的单态性限制

这个问题是密切相关的,虽然它不是关于ghci let但想法是一样的。

于 2013-08-17T14:06:19.380 回答