原です。

In message "[ruby-list:6168] Re: Ruby連載 第3回"
    on 98/02/02, hisanori / sitc.toshiba.co.jp <hisanori / sitc.toshiba.co.jp> writes:

|松尾です。

|0. 名が体を表してない

「繰り返さないのにイテレータとはこれいかに」という突っ込みに
対しては、「繰り返さないことを1回繰り返す言うわけで、考えよ
うによってはかなり数学的だ」と切り返すのはどうかしら。

さらに進んで「0回繰り返す」単なるメソッドもイテレータと呼べ
るわけで、、、(単なるメソッドにイテレータブロックをつけて文
法上のエラーにはならいですよね)この際、こういうのはどうでしょ
う?

  イテレータおよびイテレータブロックという言葉は廃止し、
  「全てのメソッドはブロックを伴える」とする。

   iterator? の語源を聞かれたら知らんふりする。

こうすると新しい名前を考えなくてすむでしょう?(^_^)


|2. 複数の手続きを指定する事が出来ない。

昔、イテレータの効用について「制御構造を定義できる」というのが
あったけど、if () then {} else {} end がつくれへんやんけ、と思っ
たのは私だけではないみたいですね。:-)


In message "[ruby-list:6196] Re: Ruby連載 第3回"
    on 98/02/03, Yukihiro Matsumoto <matz / netlab.co.jp> writes:

|まつもと ゆきひろです

|4. 現在与えられているイテレータブロックを他のイテレータにそ
|   のまま渡すのが面倒
|
|ってのがあります.滅多に発生するもんじゃなくて,イテレータが
|再帰する時くらいですが
|
|   def foo(n)
|     for item in n
|       foo(item) { |x| yield x }
|     end
|   end

ああ、これもそう思いました。最初イテレータブロックはそのまま、
渡るのかと思いました。つまり、

  def foo(n)
    for item in n
      foo(item)
    end
  end

でいいのかと。渡したくない場合は

  def foo(n)
    for item in n
      foo(item){}
    end
  end

とわざわざすることになるけど。