[#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:13322] Re: Enumerator -- Round 2

From: "Akinori MUSHA" <knu@...>
Date: 2001-05-24 12:00:03 UTC
List: ruby-dev #13322
At Thu, 24 May 2001 15:44:14 +0900,
Shin-ichiro HARA wrote:
> です。この Enumerator の様な便宜的なクラスが、標準で入ってくる事に
> 違和感があるのです。
> 
> では一応次の提案として、「Enumerator.rb を標準ライブラリとして lib
> ディレクトリに入れて、使いたければ require する」というのをあげて
> おきます。One-liner には泣いてもらいます。

 考えてみると、実は Enumerator というのは何もエンドユーザだけの
ものではないということに気づきました。

 標準に入れる最大のメリットは何かというと、それはさまざまなクラス
(標準、外部問わず)が Enumerable なオブジェクトを返すメソッドを
簡単に提供できるようになるということです。

 従来は、 include Enumerable しても each というメソッドを一つ
しか用意できませんでした。Enumerable なものを返すには、わざわざ
新しいクラス(includes Enumerable)を用意したり、その場で作った
オブジェクトに特異メソッド each を定義したり、あるいはその場で
配列を作って返すようなことをする必要がありました。

 ところが、 Enumerator が標準で用意されると俄然状況が変わります。
例えば、 find.rb を見てみます。現在、モジュールにはメソッドとして
Find::find(*path) { |f| ... } のみが用意されています。

 Enumerator 導入後、これを次のようにしてみたらどうでしょうか。

	module Find
	  def open(*path)
	    Enumerator.by_method(Find, :find, *path)
	  end
	  # Dir[] / Dir::glob からの類推
	  alias [] open

	  def find(*path)
	    # 現行の Find::find の内容
	  end
	end

すると、

	files = Find['.'].select { |f| File.file?(f) }

などということができてとても便利になります。ユーザからは特に
Enumerator という存在は見えませんが、ライブラリ側からすると、
この陰の存在によって手軽に Enumerable なオブジェクトを生成して
返すことが可能になっています。


 この Enumerator オブジェクトの生成は C API からも簡単ですし、
標準に搭載されればきっと広く利用されてユーザに利便がもたらされる
と思います。


# 実は、 Enumerator の改良案を練っていたのですが、 C API 的に
# あまりうれしさがないことと、使い方の具体例が思い浮かばない
# ことで頓挫してしまいました。現行の提案仕様で十分かも。 ;)

-- 
                     /
                    /__  __            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