我正在尝试创建一个接受表达式并对其进行评估的函数。表达式可以包含以下操作:
- 整数- 由 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