2010-01-13 5 views
2

Je suis un débutant complet chez Haskell. J'essaie de compiler ce fichier Haskell que j'ai téléchargé mais il me donne quelques erreurs.en utilisant oneOf dans haskell, erreurs dans la compilation

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

Je ne sais pas si cela suffit, mais voici la section du code avec l'erreur:

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

vous Ecrire un schéma? – Hai

Répondre

4

Dans la partie que vous avez cité la fonction firstAllowed locale ne semble pas être utilisé partout. Que se passe-t-il si vous supprimez la ligne where?

Sinon, vous pouvez essayer d'ajouter cette signature de type à firstAllowed:

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

Cela fonctionne après avoir supprimé la ligne where. Merci! –

Questions connexes