你能不能帮我下一个任务: 我应该有一个功能评估算术语法树表达式
fun eval (fn : (string * int) list -> expression -> int)
那得到一个元组列表(变量名,值)的表达式。该函数使用currying并返回表达式的评估值。它至少应该支持运营商+, -, *, /, %
表示加,减,乘,整数除法和余
对于接下来的数据类型:
datatype expression = Constant of int
| Variable of string
| Operator of string * expression
| Pair of expression list
| List of expression list
任何建议或解释,将不胜感激!
“Pair of expression list' be'Pair of expression * expression' ?.无论如何,你都可以建立起来。表达式的一个特例是最多包含1个变量的表达式。写一个类型为'int - > expression - > int'的1变量'eval1',其中形式为'Variable _'的任何表达式都将计算为传递给'eval1'的int值。一旦你写了'eval1',它应该是直截了当的(尽管不是微不足道的)来修改它来获得'eval'。对'expression'的构造函数使用模式匹配来定义'eval1'。 –