Mat*_*ams 8 haskell expression-trees expression-evaluation
在今天的考试中,我被要求在Haskell中创建一个表达式评估树.通常答案很简单:
data Expr = Value Integer
| Add Expr Expr
| Sub Expr Expr
| Mul Expr Expr
Run Code Online (Sandbox Code Playgroud)
要评估它,您只需使用如下功能:
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
Run Code Online (Sandbox Code Playgroud)
但是今天我们得到了一种数据类型:
data Op = Add
| Sub
| Mul
Run Code Online (Sandbox Code Playgroud)
所以我假设创建了我可以做的表达式树:
data Expr = Value Integer
| Op Expr Expr
Run Code Online (Sandbox Code Playgroud)
并使用相同的eval功能.但是,我已经编写了该函数并将其加载到GHCI中,但它似乎不起作用.任何人都可以解释为什么这不起作用?
jos*_*uan 14
您必须定义数据构造函数(提供名称)
data Expr = Value Integer | Compute Op Expr Expr
^^^^^^^
Run Code Online (Sandbox Code Playgroud)
然后
eval :: Expr -> Integer
eval (Value x) = x
eval (Compute Add l r) = eval l + eval r
Run Code Online (Sandbox Code Playgroud)
等等.
:)
| 归档时间: |
|
| 查看次数: |
2635 次 |
| 最近记录: |