【发布时间】:2012-08-15 22:11:03
【问题描述】:
我已经编写了一个数学计算器程序的一部分。我已经完成了程序的解析器, 因此,当用户将数学表达式作为字符串输入时,我已经有办法获得 以下类型的相应数据结构:
type expression =
| Term of int
| Addition of expression * expression
| Multiplication of expression * expression
| Subtraction of expression * expression
我现在只需要一种评估这些数据结构的方法。
- (a) 写出数学语句“3*((1 + 4)- 5)”对应的表达式。
- (b) 扩展 Ocaml 数据类型以包含 Factorial 构造函数,以便它可以处理 像“3*((1 + 4)!-5)”这样的表达式。
- (c) 编写一个 Ocaml 函数 eval,它接受一个数学表达式并返回它的 (整数)值。例如,它应该返回 0 作为部分表达式的结果 (a)。
# let rec eval expr = ... val eval : expression -> int = <fun>
您可能想要编写一个阶乘 Ocaml 函数来帮助处理新的阶乘 构造函数。
我对 a 部分感到困惑。是let expression = 3*((1 + 4)- 5);的意思吗?
对于b部分,我应该遵循|Factorial of expression * expression的模式吗?
【问题讨论】:
-
看起来你在寻求很多关于家庭作业的帮助。您需要展示您的尝试,我们不想为您从中受益。对于它的价值,(a) 部分似乎要求使用构造函数 Term、Addition 和 Multiplication 的 OCaml 表达式。
-
请不要破坏您自己的帖子。当您在此处发布时,即表示您授予 SO 在 CC-by SA 4.0 下分发内容的权利。任何破坏行为都将被撤销。
-
如果您继续破坏您的问题,它将被版主锁定。
标签: recursion tree expression ocaml