Ich arbeite an einer Funktion, die die Anzahl der in einem Ausdruck verwendeten Operatoren zählen kann. Mein Code ist wie folgt:
data Expr = Lit Int |
Expr :+: Expr |
Expr :-: Expr
size :: Expr -> Int
size (Lit n) = 0
size (e1 :+: e2) = 1 + (size e1) + (size e2)
size (e1 :-: e2) = 1 + (size e1) + (size e2)
Aber wenn ich versuche, diesen Code mit Hugs98 auszuführen, erhalte ich die folgende Fehlermeldung:
Main> size 2+3
ERROR - Cannot infer instance
*** Instance : Num Expr
*** Expression : size 2 + 3
Kann mir jemand sagen, was ich falsch mache? Ich habe selbst keine Idee mehr.