3imp 読んでみる (3)

とりあえず、Debian ポリシーマニュアルも、なんですがこちら方面にも手を付ける。

heap-based の実装戦略 (の例

できればざくっと読んで実装で色々な方がわし向きかも。で、続きを。

current environment

多分 SICP な考え方で問題無いはず。でも最後の二つの文章の理解が微妙。

  • call frame に元な環境をナニする前に保管して戻る時に元に戻す?
current value rib
  • 引数リストを hold
  • any expression と同様に引数の computation の評価が終わったら、その値は accumulator に格納される
  • この値は current rib に cons を使って追加される
  • 引数が全部評価されたら current rib は環境に combine される (??)
  • その中で application が評価される時点で current rib は破棄されるのか
  • 環境は上記の如く call frame に格納されて戻ったら元通りになる
current stack
  • current stack は call freame の先頭に保持
  • call frame は application の開始前に stack に追加。closure からの戻り時に削除
  • 前に書いた通り call frame は保管された環境で成り立っている
  • call/cc な記述あり (current stack 自身は任意の時点の call/cc 式の評価による継続オブジェクトをいつでも保存できる??)

定数、変数、手続き等がどのようにレジスタに作用するか、については以下

定数と quote

accumulator に

lambda 式

closure が生成され、それが accumulator に

if の評価
  • まず accumulator に if の test 式の結果をナニ (??)
  • if は accumulator を test して then または else に対応する式を変える

どうもざっくりいかず、微妙。作業的に夜より朝が適してるカンジ。