Implement a syntactic transformation
let
expressions are derived expressions, because
(let ((var1 exp1) ... (varn expn))
body)
is equivalent to
((lambda (var1 ... varn)
body)
exp1
...
expn)
Implement a syntactic transformation
let->combination
that reduces evaluating
let
expressions to evaluating combinations of the type shown above, and add the appropriate clause to
eval
to handle
let
expressions.