第四章习题 4.1 - 4.15 的解答。从本章开始使用 mit-scheme 9.1.1。
E-4.1: 题目的意思是,函数 list-of-values 对参数列表的求值顺序依赖于解析器的实现。如果解析器对参数列表的求值顺序是从右往左的,那么 list-of-values 的求值顺序也是从右往左的,也就是说,对于 list-of-values 中的“(cons ...)”,会先算“(list-of-values (rest-operands ...))”这部分,后算“(eval (first-operand ...))”,也就是从右往左了;如果解析器的求值顺序是从左往右,那么 list-of-values 的求值顺序也是从左往右。
(define (list-of-values-lr exps env) ; evaluates from left to right
(if (no-operands? exps)
'()
(let ((first-value (eval (first-operand
… 阅读全文…