From: "Yugui (Yuki Sonoda)" Date: 2008-10-24T20:01:22+09:00 Subject: [ruby-dev:36908] Re: {Complex,Rational}::Unify Yuguiです。 コミットを確認しました。 実装について幾つか確認させてください。 石塚圭樹 さんは書きました: >> | lib/mathn.rb >> | ext/mathn/complex/complex.c >> | ext/mathn/rational/rational.c > >> |の組合わせになっています. ext/*/{complex,rational}.c は ビルトインの >> |{complex,rational}.c に最低限の変更を加えたものです. あと, make 時に-D >> |していることぐらいです. >> >> えーと、二重に持っているということでしょうか。 > > そうです. 本家を変えてもらうわけにも行かないので. もう少し局所的な変更を想像していたのですが、本当にこれって{complex, rational}.cのコピーを持っているんですね。 ここで、 本当にこんなにコードのコピーを持つ必要がありますか? 一部のメソッドだけ再 定義するのでは足りませんか? 少なくとも、rb_cRationalに関してはシンボルが衝突するせいで一部のプラット フォームでリンクに失敗するようです。 また、これは要はf_unify_pマクロの定義を変えたと言うものであって、この話 題の発端となった組み込みクラスが添付ライブラリに配慮して特殊な挙動をする という点は、根本的には解決されていないと思いますが、いかがでしょうか。 というのは、mathn/{rational,complex}はソースコードレベルで{rational, complex}.cに依存しているので、結局の処は組み込みクラスの配慮を必要とする のではないですか? -- Yugui http://yugui.jp 私は私をDumpする