apply と Boehm GC

apply

call-with-values の実装をしようと思って、いろいろ考えていたら内部実装の apply の引数が良くない気がしてきた。

apply(Objects* arguments, Environment* environment)

いまはこうなのだけど(Objects は Object の vector)

apply(Pair* arguments, Environment* environment)

こうした方が Scheme 側との親和性も高そうな気がする。

Boehm GC

自分のインタプリタに Boehm GC を適用したら

./scheme test/test.scm
test/test.scm:99: error: invalid application [#t]
Application.cpp:31: debug: eval

とても悲しかった。

やったのは基底クラスを gc

class Object : public gc

include

#include "gc_cpp.h"

コンパイルオプション

-I /usr/local/include/gc -DGC_OPERATOR_NEW_ARRAY -DGC_NOT_DLL


リンカオプション -lgc


GCの適用は来月の予定なのだけど不安だなあ。