Ich bin neu in Haskell „konnte nicht erwartet Typ‚f‘mit tatsächlichen Typ übereinstimmen“ und ich versuche zu lernen, wie classe, ich habeeine Instanz für eine typeclass Erstellen wirft:
verwenden, um die Klasse :
class SomeClass f where
doSome :: Integer -> f
der Datentyp:
data SomeData = D1 Integer
| D2 SomeData SomeData
und ich versuche, um die Instanz zu erstellen:
instance SomeClass SomeData where
doSome x = D1 x
aber die GHCI gibt mir den Fehler:
Couldn't match expected type ‘f’ with actual type ‘SomeClass’
Ich habe einige Fragen in Bezug auf dieses Problem gesehen, aber ich konnte sie nicht für mich arbeiten zu lassen.
Wie kann ich das beheben?
Die Vertiefung falsch ist, und ich bezweifle wirklich Ihre Methode 'do' gestattet. Können Sie Ihren tatsächlichen Code angeben? –
@ Red Barton Tnx! - Du hast Recht, meine Einrückung war falsch (die Namen auch, ich habe meine Frage bearbeitet, um das zu reflektieren, aber das ist nicht der wichtige Teil). nachdem es repariert wurde, kompilierte es und lief wie erwartet (arrr der Fehlercode war überhaupt nicht nützlich) – barakcaf
@ Red Barton das wird mich lehren, nach einer 'where' Klausel einzurücken – barakcaf