Text.ParserCombinators.Parsec oneOf函数出错



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

为什么?

不能像打印oneOf "abcde"那样打印Parser Char。这就像打印一个期望输入文本的函数。无法打印函数。

(错误是由于解析器涉及一些你没有打开的扩展,但你可以忽略你得到的错误。这不是主要问题。(

要运行解析器,您需要提供源名称和输入文本,如下所示:

> 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"

最新更新