ich diese Informationen auf meinem Haskell-Code haben:Haskell: Starre Typ variable Fehler
data Symtable a = General a | Stack a
class Evaluable e where
eval :: (Num a, Ord a) => (Ident -> Maybe a) -> (e a) -> (Either String a)
typeCheck :: (Ident -> String) -> (e a) -> Bool
instance (Num a, Ord a) => Evaluable (NExpr a) where
eval _ (Const n) = Right n
typeCheck f f2 = True --to make the code compilable
es mir ein Fehler auf der Definition von eval gibt, weil es sagt: konnte nicht Typ ‚e‘ mit NExpr übereinstimmen‘ 'e' ist eine starre Variable vom Typ gebunden ... eval :: ... erwartet ea tatsächlichen Nexpr ein
ident = string und Nexpr:
data NExpr n = Const n |
Var Ident |
Plus (NExpr n) (NExpr n) |
Minus (NExpr n) (NExpr n) |
Times (NExpr n) (NExpr n)
wie es zu lösen?
Ändern Sie die Instanz in 'Instanz (Num a, Ord a) => Auswertbare NExpr wo ...' – Alec
dann heißt es: Erwartet ein Argument mehr zu Nexpr das erste Argument von Evaluable sollte Art * aber hat Art * -> * @Alec –