scheme

やっと GC がまともに動き出した。最初の設計が悪かったので大幅な書き直しを余儀なくされてしまった。その上、与えられたシンボルの検索を線形で行うのでめちゃくちゃ効率が悪い。ハッシュを持てばいいのだろうが、ハッシュの内部形式はどうしたらよいのだろう?まぁ現状は線形検索。

ついでに書くと eval の評価は再帰的に行われるが、その再帰の内部表現を C で再帰してしまうと scheme の場合継続が扱えなくなる。scheme の継続は結局その時点のスナップショットなので、ちゃんと再帰の構造も cell にしてやって、ようは push/pop してやって作る必要がある。vx-scheme ではそうしている。しかし、そこまでやるなら Virtual Machine をつくればいいわけで今回はしないつもり。(するバージョンも作ってもいいが)

schemeSICP にあるグラフィック言語を実行してみると大変たくさんのセルを生成をすることがわかる。いやこれは私の scheme の内部構造の問題かもしれない。LoL では lisp 自身でアロケーションを最適化するプログラムが載っていたが scheme で可能なのだろうか?