在haskell中使用oneOf,编译时出错

时间:2010-01-13 00:23:16

标签: haskell ghc parsec

我是Haskell的新手。 我正在尝试编译我已下载的这个Haskell文件,但它给了我一些错误。

No instance for (Text.Parsec.Prim.Stream s m Char)
  arising from a use of 'letter' at Parse.lhs:649:26-31
Possible fix:
  add an instance declaration for (Text.Parsec.Prim.Stream s m Char)
In the first argument of '(<|>)', namely 'letter'
In the expression: letter <|> oneOf "_"
In the definition of 'firstAllowed':
  firstAllowed = letter <|> oneOf "_"

不确定这是否足够,但这里是带错误的代码部分:

parseIdent = do { str <- indent
                ; return (makeIdent str)
                } <?> "identifier"
  where firstAllowed = oneOf "_" <|> letter

1 个答案:

答案 0 :(得分:4)

在您引用的部分中,似乎没有在任何地方使用本地firstAllowed函数。如果您删除where行会怎样?

或者,您可以尝试将此类型签名添加到firstAllowed

 where
    firstAllowed :: Stream s m Char => ParsecT s u m Char
    firstAllowed = ...