作者: Yukihiro Matsumoto
日時: 2008/7/23(02:35)
まつもと ゆきひろです

In message "Re: [TSpython:1136] Re: β 2Sender"
    on Wed, 23 Jul 2008 01:49:36 +0900, "Bruce." <kbk@...> writes:

|でいう、変数に対して代入できないという点からです。
|とすると lambda やら -> のアレは代入できるではないか、というと
|まあそうですねえ(^^;

そうなんですよ。Rubyで「関数オブジェクト」と呼んだ時には、
「lambda やら -> のアレ」を意味するわけで、それを
「first-class objectでない」と呼ぶ理由は何だろうか、という点
を尋ねたかったわけです。

|でも呼び出すときに .call とかしないといけないですよね。
|その手間が定義を満たすかどうかにかかわるのかはちょっとわかりませんけど。

で、「.callしなくてはいけない」というのは、関数オブジェクトが
first-class objectである条件に含まれているかどうかは自明では
ないと思います。というか、含まれていたらおかしいような。

一方、「Rubyのメソッドがfirst-class objectか」という点につい
ては、methodメソッドを使わないと取り出せないが、取り出したも
のはfirst-classですよね。取り出したメソッドオブジェクトとメ
ソッドを同じものと思うかどうかという観念的な問題はありますが。

                                まつもと ゆきひろ /:|)
p.s.
これ以上は別の場所でやった方がよいですかね。