まつもと ゆきひろです

In message "Re: [ruby-dev:39318] Re: Why doesn't Array#product return Enumerator?"
    on Fri, 11 Sep 2009 21:43:45 +0900, Yusuke ENDOH <mame / tsg.ne.jp> writes:

|> 配列と配列の積の自然な型は配列なんじゃないでしょうか。
|
|直積集合は順序対の集合のはずなので、順序対を持つコンテナなら
|なんでもいいかなと思っていました。

ふむ。

|あと、Enumerator は LazyArray の段階的導入という認識なので、
|効率以外の理由で配列と Enumerator を積極的に区別しようと
|思ったことがありませんでした。

やはりEnumeratorとLazyArrayは違うものだと思いますよ。
Enumeratorはシーケンシャルなアクセスしか許しませんし、振る舞
い(メソッド)もかなり違います。

|> (1) productがブロックを取るようにする。戻り値は配列のまま。

|ブロックが与えられた時に戻り値が self や nil になるのであれば、
|それでも構わないと思います。

|> (3) LazyArrayのようなものを作って、product(とcombinationと
|>    permutation)がブロックが与えられない時には、それを返すよ
|>    うにする。
|>
|> というのも考えられますが、よりおおげさですね。
|
|Enumerator は将来 LazyArray に変わっていくと思っているので、
|大げさとは感じませんでした。すぐには実装できないと思いますが。

それはLazyArrayができるまでproductの変更は待てるという意味で
すか。