SICP 読み (363) 5.5 翻訳系

端末のリカバリメディア作成の間隙を縫って作業。
とりあえず問題 5.49 はこの位でスルーする事に。次も若干微妙だなぁ。_仕事のすべての細部が得られる_というのは一体どーゆー意味だ。
ぐだぐだ言ってないでヤるか。

問題 5.50

とりあえずいちいちコピペは面倒なのでスクリプトを作る。不具合を以下に列挙

  • #t を 4.1 な評価器が使っている
    • #t および #f は低水準な層で true、false が定義されているのでこれを使う
  • apply が無い
    • どうすりゃ良いのか。でも + だの - だのという primitive なソレは EC-Eval でも使えるなぁ。true とか false とかも同様。でも apply を評価させると Unbound なのか、と言いつつ ch5-eceval-support にて setup-environment なソレを確認。primitive-procedures に追加してみる。
  • list が無い
    • これも primitive-procedures に追加
  • let が無い
    • これは compiler が悪いな。修正。
  • map が無い
    • primitive-procedure に追加

で、現時点で理由が不明な不具合。assemble の出力っぽいソレが膨大に出てて先頭までめくれない状態ッス。

うーん

駄目だ。とりあえず起動スクリプトの一部を貼っておいて別途検討。

(add-load-path ".")
(load "load-eceval-compiler")
(load "ch5-compiler")
(define true #t)
(define false #f)
(compile-and-go
 '(begin
    ;; 4.1.4 な評価器
    ))

スタックダンプの一部も貼っとこ。

Stack Trace:
_______________________________________
  0  args

  1  (map (lambda (p) (p)) aprocs)
        At line 385 of "./ch5-regsim.scm"
  2  value-proc

  3  (set-contents! target (value-proc))
        At line 258 of "./ch5-regsim.scm"
  4  (instruction-execution-proc (car insts))
        At line 139 of "./ch5-regsim.scm"

この上は assemble の結果が延々と出力されている上、てっぺんが見れません。