Entries from 2008-10-27 to 1 day

末尾呼び出し最適化 その3

結論としては末尾呼び出しの最適化は以前からうまくいっていた。 ただスタックの自動伸長の実装がなかったので初期化時にスタックサイズが決められていて、その大きめのアロケーションのせいで起動が遅かった。 作業 stack自動伸長を実装する。 vm.scm で実…

今日の復習

WEwLC 11章どのメソッドテストすべき 0割。 WEwLC 7章変更が永遠に終わらない 10割。 WEwLC 3章 Sensing & Separation 7割。

末尾呼び出し最適化 その2

input 末尾かどうか? 末尾までに消費したスタック output FRAME の削除 SHIFT の挿入 準備 vm/compiler をいじれるように用意する(rev 560) コンパイル結果を見せる 必ず記録を残す(こまめにコミット) 分からない動作 列挙 pass3/$local-assign val は ta…

末尾呼び出し最適化

いまさら末尾呼び出し最適化を見直しているのですが Gauche で以下のコードがスタックオーバーフローにならない理由が分からなくて混乱。 (define (my-map1 f l) (if (null? l) l (cons (f (car l)) (my-map1 f (cdr l))))) (my-map1 (lambda (x) x) (vector…