Frage

Ich bin ein kompletter Neuling in Haskell. Ich versuche, diese Haskell-Datei zu kompilieren, ich heruntergeladen habe, aber es gibt mir einige Fehler.

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

Nicht sicher, ob dies genug, aber hier ist der Abschnitt des Codes mit dem Fehler:

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

Lösung

Im Teil zitierten Sie die lokale firstAllowed Funktion nicht überall einsetzbar zu sein scheint. Was passiert, wenn Sie die where Linie entfernen?

versuchen Sie könnten alternativ diese Art Signatur firstAllowed hinzuzufügen:

 where
    firstAllowed :: Stream s m Char => ParsecT s u m Char
    firstAllowed = ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top