4.1 Exercise 4.1
We can use the fact that let* computes its results in left-to-right order to force the order of evaluation:
(define (list-of-values-ltr exp env) (if (no-operands? exps) '() (let* ((first (eval (first-operand exps) env)) (rest (list-of-values (rest-operands exps) env))) (cons first rest))))
(define (list-of-values-rtl exp env) (if (no-operands? exps) '() (let* ((rest (list-of-values (rest-operands exps) env)) (first (eval (first-operand exps) env))) (cons first rest))))