SICP 読み (190) 4.2.2 遅延評価の解釈系
ちょっとだけメモ。問題 4.30 です。何故かジュンスカがテレビで歌をうたっている。
4.2.2 の解釈系が (p2 1) を評価して 1 を戻すのは内部定義されている p において e を eval した結果が (thunk (set! x (cons x '(2))) env) を戻すだけだ (中身は評価されない)、からではないかと。でも何でいっちゃんケツの式は eval で良いのだろうか。あ、成程ね、値を戻さない (副作用のみ) な手続きが eval-sequence の中でナニ、というのが Cy が言いたいコトなのか。あるいは前提として並びの中で記述されている一番最後の式は値を戻すナニ、という事を、なんでしょうか。例示されている p という内部手続きは正にそうなってるんですが。
む、これって
(define (p2 x) (define (p e) x e) (p (set! x (cons x '(2)))))
だったらどーなるんだろ。thunk な式が出てくるのかなぁ。
上記のナニはどーでも良いとして、これはハードル高い問題ッス。ってか、問題 4.31 の問題文でこの遅延評価なソレに対するモチベーションが微妙なんですがどうしよ。