Kazuki Ohta
mover****@hct*****
2005年 8月 26日 (金) 14:33:17 JST
太田です。残存作業のリストアップ。 > ・consオペレーションとしてのSCM_CONS, CONSマクロの導入 > - 繁雑な基本操作なので欲しい > - 現在はSCM_CONSが型チェック付きオブジェクト取り出し用途に使わ > れているのでそのままでは導入できない。型名をR5RS的にpairに変 > 更すれば回避できるが、好みに合わないなら型チェック付き取り出 > しマクロの側を改名する必要がある 個人的には、pairという型名はいまいちピンと来ません。 内部で利用するだけなら#define CONS Scm_NewConsとすれば良いのですが、こ れだと外部から利用する場合に混乱が起きますよね。なので、現状のSCM_CONS マクロの名前を変更するという事になると思います。custom的にSCM_AS_CONSと いう名前にしようかと思っているのですが、ピンと来ますかね? > ・(cond) ? SCM_TRUE : SCM_FALSE を簡略化するためのSCM_BOOLIZE(仮) > マクロの導入 これは反対です。 ScmObj ScmOp_symbolp(ScmObj obj) { return (SYMBOLP(obj)) ? SCM_TRUE : SCM_FALSE; } ScmObj ScmOp_symbolp(ScmObj obj) { return SCM_BOOLIZE(SYMBOLP(obj)); } SCM_BOOLIZEマクロを導入する事によって、確かに記述は短くなりますが、初めて ソースコードを見た人にとってはSCM_BOOLIZEマクロの定義を見に行く必要が出て きます。そうするよりはむしろ上の方が直感的で理解しやすいと思います。 いかがでしょう? 次に行うもの。 ・SIOD互換のverboseの実装 ・FuncNameスタイルとfunc_nameスタイルの統一([Anthy-dev 2251]) ・FUNCTYPEの拡張([Anthy-dev 2238], [Anthy-dev 2241]) ・datas.cとuim-scm.cの改名([Anthy-dev 2251]) 懸案事項。 ・tail recursionが起こった場合のback traceをどうするか 現在はtrace_frameをScmOp_evalの先頭でスタック上に確保しているが、現状末尾 再帰が起こった場合にはtrace_frameを作成していない。ただ、mallocを使って確保 するとオーバーヘッドが大きそう。最初に配列を動的に確保しておく?しかしその場合に は継続との兼ね合いが微妙になる。難しい。 ------------------------------------------------- Kazuki Ohta : mover****@hct***** -------------------------------------------------