- 475 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:40:01 ]
- Yコンビネータは再帰のためのコンビネータであって、
lambdaの代わりにはならない。 procとlambdaは冗長ではある。Proc.newとは、似てるけど別物で、 まぎらわしいものがあれこれあるのはどうかという気はする。 (「Proc.new は、Proc#initialize が定義されていればオブジェクトの初期化の ためにこれを呼び出します。このことを除けば、proc と同じです。」) def は、確かに特別にそういうものがなくてもいいのかもしれない けど、そうしちゃうと、クラスの文脈(*)に、 class Foo (*) ここ def foo() …… end end 生にlambdaを書いて、それをModule#define_methodでインスタンスメソッド定義、 という、言語の内臓に触れるコードを書かせることになる。 class Bar define_method('bar', proc{ …… }) end こんな感じ。もしMatzがTOOWTDIを信奉してたらこうなってた、というか。
|

|