exercise 4.22~24

ex4.22

analyzeにlet->combninationを加えるだけ

(define (let? exp)                                                         
  (tagged-list? exp 'let))                                                 
(define (let->combination exp)                                             
  (let ((bindings (cadr exp)))                                             
    (cons (make-lambda (map car bindings)                                  
                       (cddr exp))                                         
          (map cadr bindings))))

;;analyzeに以下を追加
;;((let? exp) (analyze (let->combination exp)))

でいいのかな?

4.23

Alyssaの例だと実行するごとにexecute-sequenceを回して、(null? (cdr pros))とかを毎回チェックしてる。と言うのが無駄なんじゃないかと。


しかしテキストに書いてあるanalyze-sequenceは上手いなぁ・・・
sequentiallyの使い方がおもしろい。
firstに溜め込んでおいて、restのcarを加えていく感じか。
今の自分はこう綺麗にかけるだろうか?

4.24

流石に面倒くさすぎ。つーか時間どうやって測ろう。
timeコマンドとか使えばいいのかな?でもそれだと、(driver-loop)のあとどうしよう。
・・・ちょい考えて無理なら飛ばそうかしら。