YamaKen
yamak****@bp*****
2005年 8月 23日 (火) 23:47:38 JST
ヤマケンです。こんばんは。 SigSchemeの未解決事項をまとめてみました。抜けがあったら補完お願 いします。 ・equal?のバグフィクス - r1284でテストをcommit済。太田さん自身に理解してもらうため直 接修正はせず ・switchの記述スタイル([Anthy-dev 2267]) ・グローバルシンボルにプリフィクスを付ける([Anthy-dev 2251]) - Cではなくリンカのレベルで見えるシンボルの事なので、 sigschemeinternal.hに移すだけでは不十分です。また、特定のリ ンカ固有の機能に依存せずに名前衝突を回避するためにはプリフィ クスを付けるのが簡単です sigschemeinternal.h: /* datas.c */ extern ScmObj *stack_start_pointer; /* error.c*/ extern ScmObj current_error_port; /* eval.c */ extern struct trace_frame *trace_root; /* io.c */ extern ScmObj current_input_port; extern ScmObj current_output_port; extern ScmObj current_error_port; extern ScmObj SigScm_features; ・SCM_NIL → SCM_NULL への改名 - SCM_NULLP, NULLPとの整合を取るため - Schemeに詳しくない人(特にelispユーザ)がfalseと混同するのを避 けるため ・consオペレーションとしてのSCM_CONS, CONSマクロの導入 - 繁雑な基本操作なので欲しい - 現在はSCM_CONSが型チェック付きオブジェクト取り出し用途に使わ れているのでそのままでは導入できない。型名をR5RS的にpairに変 更すれば回避できるが、好みに合わないなら型チェック付き取り出 しマクロの側を改名する必要がある ・(cond) ? SCM_TRUE : SCM_FALSE を簡略化するためのSCM_BOOLIZE(仮) マクロの導入 ・以下のマクロ群のsigscheme.hへの移動 - これらはオブジェクト表現の隠蔽ではなく単なる簡略表記のための マクロなのでsigschemetype.hに含めるのは論理的におかしいと思 います sigscheme.h: /* conventional abbreviation for basic operations */ #define SCM_CAR SCM_PAIR_CAR #define SCM_CDR SCM_PAIR_CDR #define SCM_SET_CAR SCM_PAIR_SET_CAR #define SCM_SET_CDR SCM_PAIR_SET_CDR #define SCM_CAAR(l) (SCM_CAR(SCM_CAR(l))) #define SCM_CADR(l) (SCM_CAR(SCM_CDR(l))) #define SCM_CDAR(l) (SCM_CDR(SCM_CAR(l))) #define SCM_CDDR(l) (SCM_CDR(SCM_CDR(l))) #define SCM_CONS(kar, kdr) (Scm_NewCons(kar, kdr)) #define SCM_LIST_1(obj1) (SCM_CONS(obj1, SCM_NULL)) #define SCM_BOOLIZE(x) ((x) ? SCM_TRUE : SCM_FALSE) 以下の項目はもうひと区切りついてからですね。 ・FUNCTYPEの拡張([Anthy-dev 2238], [Anthy-dev 2241]) ・プリフィクスの整理([Anthy-dev 2254]) ・FuncNameスタイルとfunc_nameスタイルの統一([Anthy-dev 2251]) ・datas.cとuim-scm.cの改名([Anthy-dev 2251]) ------------------------------- ヤマケン yamak****@bp*****