写出函数eval1
和apply1
。
eval1
使用一个关联列表(其中键是Symbol值是Num)和一个算术表达式,将变量名与值匹配。
apply1
使用一个符号('+ 或 ')、一个表达式列表和一个关联列表,并计算将符号指定的函数应用于列表中的表达式所产生的数字。
例子:
(check-expect (eval1 '((x 2) (y 3) (z 4)) '(+ x (* y 2))) 8)
(check-expect (apply1 '* '(a (+ 3 b)) '((a 2) (b 1))) 8)
PS:eval1
而且apply1
应该是相互递归的。