Ich habe meinen eigenen Haskell-Datentyp geschrieben, um eine Summenoperation mit ganzen Zahlen aufzulösen, aber ich weiß nicht, wie ich die Semantik machen soll.Haskell - arithmetische Operationen mit Datentypen
data Expr = Value Int
| Sum Expr Expr
Ich habe versucht zu tun:
sum:: Expr -> Expr -> Int
sum a b = b + a
val:: Int -> Int
val a = a
Ich mag schreiben wollen:
Sum (Value 3) (Value 5)
und 8 als dafür bekommen, irgendwelche Ideen?
Was ist passiert, als Sie es versucht haben? –
'Sum (Wert 3) (Wert 5)' wird * immer *, definitionsgemäß, ein eindeutiger Wert vom Typ 'Expr' sein; Sie können es nicht auf '8' reduzieren, da '8' kein Konstruktor für' Expr' ist. – chepner