作者: Bruce.
日時: 2008/1/22(12:49)
Bruce.です。

機械伯爵 writes:

> <ブロック>
> > Rubyのブロックは美化された高階関数です。
> > 関数を引数に取るLisp関数のうち、圧倒的多数がひとつの関数しか取らないため、
> > Rubyのブロックはひとつだけという設計上の決定に至ったとどこかで聞きました。
> > 
> > ブロックに複文が記述できる利点はやっぱり制御構造の抽象化です。
> > 自分で制御構造の構文を作れる感覚です。
> 
>  Rubyの本を読み直して、自分が根本的なところで誤解しているような気がしま
> した。
> 
>  ブロックというなら、Pythonの関数/手続きはすべてブロックです(ブロック
> 以外の関数は存在しません)
> 
>  ですから、Pythonのdef文は全てRubyで言うところのProc.new(or proc or 
> lambda?)であり、したがってcallメソッドを全て介していると判断されて、
> func()で呼び出しているわけです。

すんません、今ちとまとめている時間がないので指摘だけで申し訳ないですが
このへん大きく勘違いが入っていると思います。


>  よって、Rubyがすごいトコは、ブロックが使えるところというよりも、コレク
> ションなどにブロックを受け取って手軽にループ構造を作るメソッドが充実して
> いるところではないでしょうか。

こっちはまあハズレということはないと思いますが。


いじょ。
#さあ今日はアレをフラゲするぞw