青山です。

On Tue, May 28, 2002 at 11:39:44AM +0900,
 Yukihiro Matsumoto wrote:

> |一方、今回の大元の Range はどういう「範囲」を表すものかというと、
> |Enumeratable なので全ての要素を数え上げられる集合ですよね。
> 
> いやあ、そうとも限らない点が話をややこしくしている点ですよね。
> Rangeは「数え上げられる範囲」が主ですが、「ここからここまで」
> という範囲を表現する場合もありえるからです。Rubyでは目的によっ
> て細かくクラスを分けるよりひとつのクラスにいろいろ詰め込む傾
> 向があります(大クラス主義)。

なつかしい話題ですね。以前の議論の時も結論は出ませんでしたが、しかし、
出発点になるかもしれない原点らしき物には行きついていたようなので、引用
してみます。

[ruby-dev:6316]
> まつもと ゆきひろです
> 
> In message "[ruby-dev:6222] Re: Range (Re: array[last..first] (Re:
> Subseq of Array))"
>     on 99/03/11, 石塚圭樹 <keiju / rational.com> writes:
> 
> |Enumerableで思い出しましたが, eachの機能と本来のRangeの機能が整合して
> |いないなって気もしますね.
> 
> |区間と見るRangeと区間内の整数列と見ているRangeが何か矛盾を感じますね.
> |この辺も整理した方が良いのかも. 
> 
> 今回 ... なRangeの実装でソースを眺めて気が付いたのは名前の本
> 来の意味である「区間」としてRangeを実装しているメソッドは実
> は === しかないんですね.その他のメソッドは全部区間内の要素
> 列として Range を扱ってます.
> 
> 整理するときの出発点になるかもしれません.

という事ですから、Range というより Set, Interval に近いのは確かなよう
なので、現在の Range に対して違和感が出て来るのは当然なのでしょう。

しかし、この時点でやっと出発点で、この後もしばらくは議論が続いたものの、
なかなか先は見えて来ない遠い道のりとなったのでした...

ですが、その後 ruby-math も出来ましたし、ゆっくりとでも、また、たまに
でも、こうして議論を重ねて、いつしかより良い Range にたどり着けたらい
いですね。


-- 
青山 和光 Wakou Aoyama  <wakou / ruby-lang.org>