Emacs Lisp
■ このスレッドは過去ログ倉庫に格納されています
0596デフォルトの名無しさん
NGNG>>588 の foo を例にすると、 let の中で tail-call してて、呼ばれた foo も let で終わってる。
内側の let の中では、この二つの let が作る binding は、一つにまとめちゃっていいよね。 (>>579)
それで、一つにまとめると同じ symbol は隠れちゃうから、上書きしちゃっていい。
そういう最適化ができれば、たぶん少し複雑な再帰でも、 binding stack 成長させずにできそうな気がするけど…どうだろ。
関数末尾の let とかを特別視して、 tail-call のときにそういう binding をまとめられる binding として記憶しとくことと、
末尾の binding 作るときにまとめられる binding があるかどうか確認して、あればまとめることが必要になるけど。
■ このスレッドは過去ログ倉庫に格納されています