まつもと ゆきひろです

In message "[ruby-dev:16606] Re: defined? autoload constant"
    on 02/03/26, 石塚圭樹 <keiju / rational.com> writes:

|>(1)はmethodでしょう。+もメソッドだから。かっこは構文解析の段
|>階で消えてしまっています。
|
|以前(今回の修正前まで)は, expressionでしたが, そっちがおかしい?

そうです。NODE_NEWLINEに対応していませんでした。

|>(2)は「barを呼ぶのはおかしいではないか」ということだと思うの
|>ですが、現状では実は引数に対しても再帰的にdefined?を適用して
|>るからです。やりすぎか。
|
|たぶん. というのも, 

|fooが定義されていないと 1+foo がnilなのは, 何か変な気がしないでもない.

私の感覚では、fooが定義されていないのに 1+foo が定義されてい
るほうが「何か変な気がしないでもない」なんですけど。

|fooが定義されれば, 1+fooがexpressionになるならわからんでもないけど,
|methodなんでしょ. そうすると, fooが定義されると、1+fooがメソッドとして定
|義される? 

えーと、これは(私の希望としては)真偽値と種別は少し分けて考え
てもらえると助かります。つまり、defined?が真を返すときには、
その「式」は定義されているということが分かると。そして、定義
されているときの式の種別はなにかという情報が文字列として与え
られると考えてください。

ですから、1+fooは1もfooも両方が定義されているときに真となり、
そして真であるときには、その種別はメソッド呼び出しであるとい
う解釈です。

                                まつもと ゆきひろ /:|)