我在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
有帮助吗?

解决方案

在部分你引用当地firstAllowed功能似乎并没有在任何地方使用。如果您删除where线会发生什么?

另外,您可以尝试这种类型的签名添加到firstAllowed

 where
    firstAllowed :: Stream s m Char => ParsecT s u m Char
    firstAllowed = ...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top