【发布时间】:2012-03-07 01:21:56
【问题描述】:
我必须想出一个函数来评估抽象语法树并返回其评估结果。
evaluate 将具有类型 Exp -> int 选项
评估 (Prod(Num 5, Diff(Num 6, Num 1)));; 验证它:int option = Some 25
@约翰·帕尔默 我该怎么做呢?我可以使用模式匹配吗?如果是这样,我将如何做才能确定需要完成的操作。
这是我想出的?我仍然不明白每个说的代码。
let rec evaluate = function
| Num n -> Some n
| Neg e -> match evaluate e with
|Sum (a,b) -> evaluate(a) + evaluate(b)
|Diff(a,b) -> evaluate(a) - evaluate(b)
| Prod (a,b) -> evaluate(a) * evaluate (b)
|Quot (a,b) -> evaluate(a) / evaluate(b)
【问题讨论】:
标签: f# f#-interactive