CommonLisp初心者スレ
レス数が950を超えています。1000を超えると書き込みができなくなります。
0977デフォルトの名無しさん
NGNG>(クロージャが作られた時に参照している幾つかの変数だけ分かれば良いとか)
その通り。コンパイル時にどの変数を参照してるかわかるので、それらだけを
抜き出してフレームを作るようなコードを出すこともできます。ただ、setfされる
変数は共有しなければならないので、それは一段間接参照をかませます。
Scheme->Cの処理系でこれをやってるのを見たことがあります。環境をCの
関数フレームに置けるので有利です。
この方法は、単に環境と関数ポインタのペアを作るのにくらべてランタイムの
クロージャ作成時のコストが高くつきますが、余分な環境を持たないメリットも
あるので、可否は処理系全体のバランスですね。
レス数が950を超えています。1000を超えると書き込みができなくなります。