ghci版本是GHCi,版本8.6.1:http://www.haskell.org/ghc/
Prelude> :m +Text.ParserCombinators.Parsec
Prelude Text.ParserCombinators.Parsec> oneOf "abcd"
<interactive>:7:1: error:
? Non type-variable argument
in the constraint: Text.Parsec.Prim.Stream s m Char
(Use FlexibleContexts to permit this)
? When checking the inferred type
it :: forall s (m :: * -> *) u.
Text.Parsec.Prim.Stream s m Char =>
Text.Parsec.Prim.ParsecT s u m Char
为什么?
答案 0 :(得分:2)
您不能像Parser Char
那样打印oneOf "abcde"
。就像打印一个需要输入文本的函数一样。无法打印功能。
(该错误是由于解析器涉及您未打开的某些扩展,但您可以忽略所得到的错误。这不是主要问题。)
要运行解析器,您需要提供源名称和输入文本,如下所示:
> import Text.ParserCombinators.Parsec
> parse (oneOf "abcde") "sourceName" "a"
Right 'a'
> parse (oneOf "abcde") "sourceName" "b"
Right 'b'
> parse (oneOf "abcde") "sourceName" "z"
Left "sourceName" (line 1, column 1):
unexpected "z"