SICP 読み (371) 5.5 翻訳系

帰宅したので続きに着手。

問題 5.50

ええと、compile 対象のナニに以下の手続き定義を追加。

(define (map f l)
  (if (null? l)
      '()
      (cons (f (car l))
	    (map f (cdr l)))))

で、primitive-procedures から map なリストを削除

	(list 'apply apply)
	(list 'list list)
;	(list 'map map)
	(list 'cdddr cdddr)
	(list 'caddr caddr)

で、どうか。
ってまず compile しないと駄目なんだった。で (start eceval) したら length が lookup できんそうで。追加で以下を primitive-procedures に追加したら

  • length
  • set-car!
  • set-cdr!

動いた。いやはや。で、今から何するんだっけ。eval の入口あたりで breakpoint はって動作を見てみる、かなぁ。