Kazuki Ohta
mover****@hct*****
2005年 8月 27日 (土) 00:04:37 JST
太田です。 anthy + uim on SigSchemeで初メールです(笑) > > 懸案事項。 > > ・tail recursionが起こった場合のback traceをどうするか > > 現在はtrace_frameをScmOp_evalの先頭でスタック上に確保しているが、現状末尾 > > 再帰が起こった場合にはtrace_frameを作成していない。ただ、mallocを使って確保 > > するとオーバーヘッドが大きそう。最初に配列を動的に確保しておく?しかしその場合に > > は継続との兼ね合いが微妙になる。難しい。 > > これは多分サポート不可能です。R5RS によれば、というか一般的に、 "proper > tail recursion" の定義は末尾呼び出しがメモリを消費しないことですから、そ > の末尾呼び出しの情報をどこかに保存していると、CPS なコードなんかがメモリ > 不足で実行できなくなります。 なるほど、言われて見ればそうですね。これは愚言でした。 # 継続作成時のscm_trace_rootポインタぐらいは保存しておいても良さそうですね。 ------------------------------------------------- Kazuki Ohta : mover****@hct***** -------------------------------------------------