SICP問題4.1
3章が終了して4章開始。
元のlist-of-values
(define (list-of-values exps env) (if (no-operands? exps) '() (cons (eval (first-operand exps) env) (list-of-values (rest-operands exps) env))))
基盤のLispの評価の順と無関係に被演算子を左から右へ評価するlist-of-values
(define (list-of-values exps env) (if (no-operands? exps) '() (let ((first-eval-exp (eval (first-operand exps) env))) (cons first-eval-exp (list-of-values (rest-operands exps) env)))))
被演算子を右から左へ評価するlist-of-values
(define (list-of-values exps env) (if (no-operands? exps) '() (let ((rest-eval-exps (eval (list-of-values (rest-operands exps) env)))) (cons (eval (first-operand exps) env) rest-eval-exps))))