我正在尝试创建一个接受表达式并对其进行评估的函数。表达式可以包含以下操作:
- 整数- 由 tuple 描述
int(N),其中N是整数。 - 加法- 由元组描述
add(X Y),其中X和Y都是算术表达式。 - 乘法- 由元组描述
mul(X Y),其中X和Y都是算术表达式。 - 变量- 由元组描述
var(A),其中A一个原子给出变量名 - 环境- 由记录描述
env(a:5 b:5),其中a和b是值为 5 的变量。
例如:{Eval add(var(a) mul(int(3) var(b))) env(a:5 b:5)}。哪个应该评估为20.
到目前为止,我已经实现了整数、加法和乘法。但是我不确定从哪里开始变量和环境。
我当前的代码:
fun {Eval X}
case X of int(N) then N
[] add(X Y) then {Eval X} + {Eval Y}
[] mul(X Y) then {Eval X} * {Eval Y}
end
end