今日の試験で、Haskell で式評価ツリーを作成するように求められました。通常、答えは次のように簡単です。
data Expr = Value Integer
| Add Expr Expr
| Sub Expr Expr
| Mul Expr Expr
それを評価するには、次のような関数を使用するだけです。
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
ただし、今日、データ型が与えられました。
data Op = Add
| Sub
| Mul
だから私は、私ができる式ツリーを作成すると仮定しました:
data Expr = Value Integer
| Op Expr Expr
そして、同じeval
機能を使用します。しかし、私はその関数を書いて GHCI にロードしましたが、動作していないようです。これが機能しない理由を誰か説明できますか?