まつもと ゆきひろです

In message "[ruby-dev:8577] Re: [REQ] {enumerable, integer, range}.rand"
    on 99/12/07, Dai <MAP2303 / mapletown.net> writes:

|  やはり Collection モジュールを提案した方がよさそうに思います(^^;
|  ぼくも Enumeration#random_get() はイヤですが、Collection#random_get() は
|うれしいかもしれないなーというところ。

どーなんでしょうねえ。inferfaceを定義する必要の無いRubyでは
collection モジュールってどんなものになるのかよく分からんで
す。つまり、Rubyにおいては実装の共有しか意味が無いんで、基本
となるメソッドから実装できる実装が共有できる場合にだけモジュー
ルとして独立させる意味があるんですが、collectionクラスで共有
できる実装ってなんなんでしょう。

そーゆーのが思い付かなかったのが、現状Collectionモジュールが
ない理由で、逆に each をベースにして共有できる実装がいくつか
あったのが Enumerable、<=>をベースにしたものが Comparable な
んです。これが

|  そういえばまつもとさんはなぜ Enumeration だけ実装したんでしょう?

の答えです。ついでにいうと、collectionはモジュールでなくクラ
スであるべきのような気がしますが、いろいろ考えてそういうのは
要らないようだとの結論を出してます。

というのも、仮に動的言語でCollectionクラスを用意するなら、そ
のクラスが持つだろう共通メソッドはおそらくは繰り返し系のもの
(Smalltalkなら do: のような)だろうが、そーゆーのは言語仕様と
してはブロックで、メソッドとしては Enumerableモジュールで実
現できるし、その方が良さそうだから。

                                まつもと ゆきひろ /:|)