In einer Prüfung heute wurde ich gebeten, einen Ausdruck Bewertungsbaum in Haskell zu erstellen. Normalerweise ist die Antwort so einfach wie:Ausdruck Bewertungsbaum in Haskell
data Expr = Value Integer
| Add Expr Expr
| Sub Expr Expr
| Mul Expr Expr
Und es zu bewerten, müssen Sie nur eine Funktion verwenden, wie zum Beispiel:
eval :: Expr -> Integer
eval (Value x) = x
eval (Add l r) = eval l + eval r
eval (Sub l r) = eval l - eval r
eval (Mul l r) = eval l * eval r
aber heute waren wir einen Datentyp gegeben:
data Op = Add
| Sub
| Mul
Also nahm ich an, den Ausdruck Baum zu erstellen, den ich gerade tun konnte:
data Expr = Value Integer
| Op Expr Expr
Und verwenden Sie die gleiche eval
Funktion. Ich habe diese Funktion jedoch geschrieben und in GHCI geladen, aber es scheint nicht zu funktionieren. Kann jemand erklären, warum das nicht funktioniert?
Ahhhhhh ok, vielen Dank. Das ist jetzt offensichtlich, aber schon mehrere Konstruktoren haben mich ein bisschen verwirrt. –
Ihr Lehrer ist gut, zwingt Sie zum Nachdenken (nicht nur erinnern): D – josejuan