SICP 読み (137) 4.1.1 評価器の中核
相当スルーして 4 章に突入。スデに 4.1.2 も読み進めつつあるんですが、体調不良なソレと kernel なナニとで進捗悪い。
いつもの通り、実装を小出しにされつつ、な進み方なんですが机上ベースで考えるのに慣れつつもあります。昔のヒトなので_机上_で、というのが体に染みついていたりしてまして、こーゆー問題はなんとなく嬉しい。
問題 4.1
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))))
_List の評価の順と無関係に_な解として思い付いたのは let なんですが、それが解の一つとして以下が問題の解でしょうか。
左から右
(define (list-of-values exps env) (if (no-operands? exps) '() (let ((left (eval (first-operand exps) env))) (cons left (list-of-values (rest-operands exps) env)))))
右から左
(define (list-of-values exps env) (if (no-operands? exps) '() (let ((right (list-of-values (rest-operands exps) env))) (cons (eval (first-operand exps) env) right))))
別解を思いつけないあたりが弱いんですが ...
# 違ってたらもっと微妙。
で
今からコンパイル着手です。