3imp 読んでみる (3)
とりあえず、Debian ポリシーマニュアルも、なんですがこちら方面にも手を付ける。
heap-based の実装戦略 (の例
できればざくっと読んで実装で色々な方がわし向きかも。で、続きを。
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 に対応する式を変える
どうもざっくりいかず、微妙。作業的に夜より朝が適してるカンジ。