早瀬@阪大です。

返事が遅れてしまいました。すみません。

>   * ローカル変数のスコープは静的に決まるべき、つまり代入文が
>     実行されたら変数が存在するというルールは*良くない*
> 
>     なぜなら、動的なスコープは分かりにくいし、せっかくの数少
>     ない最適化の機会を奪うことになるから。


説明ありがとうございます。納得しました。動的なスコープは確かにややこしいで
すね。宣言文中で代入前に値が使えてしまうのが、(おもしろい|何となく気持悪い)
ので質問してみました。

あえて宣言文の途中で、代入前に変数の値を使った場合にエラーを出そうと思うと、
「宣言されているが初期化されていない状態」を導入して、宣言文の終りで「初期
化されていない状態」であった場合にはデフォルトの初期値(nil)を代入する、と
いった処理が必要になると思うのですが、ちょっとやり過ぎですね。
x=x などという、自分の足に狙いをつけて撃つようなことをしているのだから、止
める必要もありませんし。

-- 
早瀬 康裕
大阪大学基礎工学部情報科学科数理科学コース