問題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