問題5.50 – SICP(計算機プログラムの構造と解釈)その302
2009年12月30日
問題5.50
4.1節の超循環評価器を compile-and-go させる。
primitive-procedures に必要な手続きを追加していく。
また、let が定義されていなかったので基本手続きに let を追加する。
レジスタ計算機シミュレータの make-new-machine は性能監視機能を追加したものを使った。
環境へ基本手続きを登録する際に map が上手く動作しなかったので "いろいろてst: SICP問題5.50" を参考にして map を定義し primitive-procedure-objects を修正した。
また、ece4compiler.scm の compile-and-go の (eceval 'trace-on) のコメントアウトを解除すると実行をトレースできる。
とりあえず、ちゃんと動作するようになったのでファイル(sicp-ex5.50.zip)をアップロードしておく。
実行結果
$ gosh
gosh> (load "./compiled-eval.scm")
(total-pushes = 1669 max-depth = 123)
;;; EC-Eval value:
ok
;;; EC-Eval input:
(driver-loop)
;;; M-Eval input:
(define (factorial n)
(if (= n 1)
1
(* (factorial (- n 1)) n)))
;;; M-Eval value:
ok
;;; M-Eval input:
(factorial 5)
;;; M-Eval value:
120
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542
