YamaKen
yamak****@bp*****
2005年 8月 21日 (日) 22:47:14 JST
ヤマケンです。 SigSchemeベースのuimが動き始めたようですが、やはりuimのコードに はSIOD依存が多量に含まれているようですね。 そこで提案なんですが、*.scmをR5RS互換に書き換えるのではなく、一 旦SigScheme側をSIODのバグ的仕様互換にして、ほぼtrunkのままの *.scmを動かす事を当面の目標にしてはどうでしょうか。 これなら不具合の原因が*.scm側にあるのかSigScheme側にあるのかを同 時に追わなくて済みます。SigScheme本体のバグを潰してSIODと同等に 安定して動くようになってから、別途*.scm側のR5RS互換に手を付ける 事ができます。 私が思い付く限りでは以下のような差があります。GaUnitによるテスト がSigSchemeでも動くようになればtest/以下に用意された各種テストを 使って非互換性をあぶり出せるようになるので、どこまでSIOD互換を進 めるかはともかく、まずそれを目標にするのが良いと思います。 ・SIODは#fと()を区別しない (SigScm_false = &SigScm_nil_impl) ・SIODの=はint以外の比較にも使える ・SigSchemeにverboseサポートがない。GaUnitを使ったテストのために はverboseレベル1のサポートが必要 ・loadまわりでpathの扱いが非互換? $ uim/uim-sh SigScm_load : no such file = (null) **** BACKTRACE **** ・SigSchemeのprintがSIOD互換でない。util.scmにsiod-printを用意し たが、SigSchemeのprintをSIOD互換にしてしまった方がコード書き換 えを回避できる。現状のSigSchemeのprintに依存しているコードは displayln等に書き換え ・SIODのバグ的仕様込みではSLIBのSRFI-1は動かないと思われるので、 util.scmのものを復活させる。util.scmのSRFI procsのバグに依存し たコードも存在する可能性があるので、それによる不具合を排除する ためにも必要 ・*catch等の実現が大変なものまでは互換をとらずに済ませる ------------------------------- ヤマケン yamak****@bp*****