From: Shin-ichiro HARA Date: 1998-02-03T14:59:39+09:00 Subject: [ruby-list:6203] Re: Ruby連載 第3回 原です。 In message "[ruby-list:6168] Re: Ruby連載 第3回" on 98/02/02, 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 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 とわざわざすることになるけど。