SICP Practice

Practice 4.1

left to right

(define (list-of-values exps env)
  (if (no-operands? exps)
      '()
      (let (first (eval (first-operand exps) env))
        (let (right-rest (list-of-values (rest-operands exps) env))
          (cons first right-rest)))))

right to left

(define (list-of-values exps env)
  (if (no-operands? exps)
      '()
      (let (right-rest (list-of-values (rest-operands exps) env))
        (let (first (eval (first-operand exps) env))
          (cons first right-rest)))))