遠藤です。

2009年9月12日7:51 Yukihiro Matsumoto <matz / ruby-lang.org>:
> まつもと ゆきひろです
>
> 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の変更は待てるという意味で
> すか。


すみません、このメールに返信していないことに今更気がつきました。

LazyArray は導入の見込みが薄くなったと聞いたので、それなら (1) が
いいかなと思います。

絶妙なタイミングで Feature #3021 [ruby-core:29045] で (1) と同じ
提案がなされている (というかそれを見てこのメールを思い出した) ので
承認を頂けると嬉しいです。1.9.2 に入るためには今日中ですが……。

-- 
Yusuke ENDOH <mame / tsg.ne.jp>