[#13087] importing forwardable — "Akinori MUSHA" <knu@...>

 石塚さんの forwardable.rb を標準添付ライブラリにするべく、

11 messages 2001/05/02

[#13169] SizedQueue#pop causes deadlock — "Okada Jun" <yun@...>

岡田です。

18 messages 2001/05/13
[#13171] Re: SizedQueue#pop causes deadlock — "Akinori MUSHA" <knu@...> 2001/05/13

At Sun, 13 May 2001 14:11:18 +0900,

[#13176] Re: SizedQueue#pop causes deadlock — matz@... (Yukihiro Matsumoto) 2001/05/13

まつもと ゆきひろです

[#13177] Re: SizedQueue#pop causes deadlock — "Akinori MUSHA" <knu@...> 2001/05/13

At Mon, 14 May 2001 00:24:45 +0900,

[#13187] Re: SizedQueue#pop causes deadlock — matz@... (Yukihiro Matsumoto) 2001/05/13

まつもと ゆきひろです

[#13202] Re: [ruby-list:29672] Re: Enumerator — "Akinori MUSHA" <knu@...>

 ruby-dev に移ります。

26 messages 2001/05/15
[#13208] Re: [ruby-list:29672] Re: Enumerator — matz@... (Yukihiro Matsumoto) 2001/05/15

まつもと ゆきひろです

[#13259] Enumerator -- Round 2 — "Akinori MUSHA" <knu@...>

 もう一度、 Enumerable/Enumerator についてみなさんのご意見を

29 messages 2001/05/20
[#13260] Re: Enumerator -- Round 2 — matz@... (Yukihiro Matsumoto) 2001/05/20

まつもと ゆきひろです

[#13265] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/21

At Mon, 21 May 2001 06:04:32 +0900,

[#13268] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/21

原です。

[#13270] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/21

At Mon, 21 May 2001 15:00:11 +0900,

[#13289] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/22

原です。

[#13290] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/22

At Tue, 22 May 2001 19:02:10 +0900,

[#13291] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/22

原です。

[#13293] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/22

At Tue, 22 May 2001 20:57:02 +0900,

[#13305] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/24

原です。

[#13322] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/24

At Thu, 24 May 2001 15:44:14 +0900,

[#13277] ext/dbm in ruby 1.7 — Kazuhiro NISHIYAMA <zn@...>

ruby 1.7のext/dbmですが、

16 messages 2001/05/21
[#13280] Re: ext/dbm in ruby 1.7 — matz@... (Yukihiro Matsumoto) 2001/05/21

まつもと ゆきひろです

[#13292] Integer("X") rescue -1 が parse error — YASUI Kentarow <kenyasui@...>

安井です。

18 messages 2001/05/22
[#13294] Re: Integer("X") rescue -1 が parse error — matz@... (Yukihiro Matsumoto) 2001/05/22

まつもと ゆきひろです

[#13295] Re: Integer("X") rescue -1 が parse error — "Akinori MUSHA" <knu@...> 2001/05/23

At Wed, 23 May 2001 08:59:50 +0900,

[#13300] 1.6.4 preview3 (Re: Re: Integer("X") rescue -1 が parse error) — matz@... (Yukihiro Matsumoto) 2001/05/24

[#13304] Re: 1.6.4 preview3 (Re: Re: Integer("X") rescue -1 が parse error) — "Akinori MUSHA" <knu@...> 2001/05/24

At Thu, 24 May 2001 14:15:04 +0900,

[#13428] mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

19 messages 2001/05/31
[#13435] Re: mswin32/ming32 system patch (experimental) — nobu.nakada@... 2001/06/01

なかだです。

[#13442] Re: mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...> 2001/06/01

こんにちは、なかむら(う)です。

[#13446] Re: mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...> 2001/06/02

こんにちは、なかむら(う)です。

[#13450] Re: mswin32/ming32 system patch (experimental) — nobu.nakada@... 2001/06/04

なかだです。

[ruby-dev:13202] Re: [ruby-list:29672] Re: Enumerator

From: "Akinori MUSHA" <knu@...>
Date: 2001-05-15 12:15:19 UTC
List: ruby-dev #13202
 ruby-dev に移ります。

At Tue, 15 May 2001 19:11:33 +0900,
K.Kosako <kosako@sofnec.co.jp> wrote:
> Akinori MUSHAさんの<8666f9gyrz.wl@archon.local.idaemons.org>から
> > 3. enum_with の名前はこれでいいのか?
> > 
> > → enum, with なども考えられる。ただ、ともに少し意味が曖昧で、
> > ジェネリック過ぎる感じがする。これでいいのだ。
> 
> enum_withの機能は、Enumeratorオブジェクトを返すことだけですよね?
> それなら、名前はto_enumのほうが分かり易いように思います。

 Enumerable#to_enum というのは明らかに変なので、 Object に入れる
場合の話でしょうか。


 どこに入れるかについて、さらに突っ込んで考えてみました。

a. Enumerable

 Module や Class は Enumerable ではないので、クラス(モジュール)
メソッドに対して適用できない。(e.g. ObjectSpace::each_object,
Etc::group, Etc::passwd)

 Module にも追加するということは考えられるが、その場合でもやはり
「each は用意していないが (つまり Enumerable ではない) 他の名前で
イテレータを用意している」ものに対しては適用できない。これは、
each という名前のメソッドで列挙されるものが自明でないという場合
には十分あり得ることだ。

 さらに、そもそも Enumerable とは include する側に each が存在
することを前提としたモジュールだが、 enum_with は each を利用
しないどころか、むしろ別のメソッドを each に見立てるためのもの
であり、 Enumerable に入るのはおかしいのではないか。
	
b. Object

 enum_with を任意のオブジェクトについて適用できるので、用法を
考えれば Object に入れるのがもっとも合理的である。

 ただ、 Object に標準で入れるほど自然で価値があるものなのか、
という点が大きな問題となる。


 とここまで考えたところで、いいことを思い付きました。

1. Enumerator をもっと使いやすくするため、 new のエイリアスと
して [] を用意する。(Array, Hash に倣う)

2. Enumerator#with を用意し、 Enumerable, Object はそのまま。

これによって、

	Enumerator[ObjectSpace, :each_object].collect {|x| ...}
	# または
	Enumerator[ObjectSpace].with(:each_object).collect {|x| ...}

	Enumerator[str, :each_byte).with(:each_with_index) {|b,i| ...}
	# または
	Enumerator[str].with(:each_byte).with(:each_with_index) {|b,i| ...}

と書けるようになります。Enumerator クラスのインスタンスメソッド
なら、 with でもぶつかる心配はありませんし、意味も明確です。

 今度こそいかがでしょうか?

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Freeze this moment a little bit longer, make each impression
  a little bit stronger..  Experience slips away -- Time stand still"

In This Thread

Prev Next