Question

I'm a complete newbie at Haskell. I'm trying to compile this Haskell file I've downloaded but it's giving me some errors.

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

Not sure if this is enough, but here's the section of the code with the error:

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

Solution

In the part you quoted the local firstAllowed function doesn't seem to be used anywhere. What happens if you remove the where line?

Alternatively you could try to add this type signature to firstAllowed:

 where
    firstAllowed :: Stream s m Char => ParsecT s u m Char
    firstAllowed = ...
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top