斎藤です。戦線を広げすぎたかもしれません ^^;

----- Original Message ----- 
From: "Shigeo Kobayashi" <shigeo / tinyforest.gr.jp>
Sent: Monday, July 07, 2003 4:50 PM
Subject: [ruby-dev:20526] Re: [BigDecimal] proposal to change specification


> えっと、rationalとbigdecimalの相互変換はかなりレアなケースでは
> ないでしょうか?

その点は自分もそう思います。しかし、例えまれでも、
それをどう統一的に扱うかという点を気にしています。

> > また既に、添付ライブラリどうしであるrationalとcomplexには、
> > それぞれ相手を意識したコードが入っています。
> これは、作者が同一と言うことと、rational の利用目的からいって
> rationalなcomplexはあり得ると思います。

ええと、自分が言いたかったのは
「既に標準添付ライブラリの中には、お互いの存在(仕様)を意識した
 コードが入っているものもある」
という点です。bigdecimal.cの中で、Rationalを意識するのも
悪くないのでは、という意味です。

また、ライブラリを使用する人から見れば、どのライブラリが
誰の手によるものであるかというのは、興味がない事だと思います。
自分が作ったものだからついでに、というよりも、黙っていても
複数のライブラリが相互にうまく動くようにという意味から、
complex.rbとrational.rbの中に相手を意識したコードが
入っているのだと、自分は受け取りました。

> > 標準ライブラリどうしの連携がスムーズであることも、Rubyの
> > 使いやすさという点で意味を持つと思うのです。
> require 'bigdecimal-rational' を1行入れることが「使いやすさ」
> を損なうとは(自分では)思えません。

自分も、損なうとまでは思いません。ただ、ない方が楽だと思います。

結局自分がひっかかっているのは、一行増える点ではなく、
既存のライブラリとBigDecimalとのスタンスの違いなのだと思います。

例えばComplexでは、requireされた時点で自動的に数学関数を
再定義します。これは少ない手順で、できるだけライブラリ側が
ユーザのために仕事をしようという事でしょう。
ここらへん、自分が「Rubyっぽい」と感じる部分です。
一方BigDecimalはrequire 'bigdecimal-math'をしなければなりません。
(という方向でしたよね?)

このように、他のライブラリとの連携部を核心部から除くなどの目的で、
一つのライブラリを意図的に複数のファイルに分けたライブラリは
現状Rubyにないと思います。小林さんの趣味を害するつもりは
ないのですが (^^; あくまでも、標準ライブラリは「Rubyの一部」な
わけなので、他のライブラリと同じ基準にそろえるべきではない
でしょうか。

> まぁ、将来rationalとbigdecimalの相互変換が頻繁に実行される
> ようになってから考慮しても遅くはないでしょう。それまでは、

[ruby-dev:20449]でご自身がおっしゃるように、一度決めた仕様は
なるべく変更すべきでないと考えます。
逆に、今そうしてもデメリットはないと思います。

---
斎藤ただし