>>474の件ですが
レキシカルスコープを分からなかったというより
ダイナミックスコープを知らなかっただけでした
ダイナミックスコープはコードの実行時にコールスタックを辿って変数を決める方式で
関数の中でローカルとして宣言されていない変数を見つけると、
処理系はコールスタックを辿り、呼び出し元のスコープの中で変数を探す
それを変数が見つかるか、グローバルスコープに突き当たるまで繰り返す
そういうものが
ダイナミックスコープだというのですが、
そんなの見たことがありません
それもそのはずで、
現代のプログラミング言語のほとんどがレキシカルスコープを採用しているとのこと。
そしてレキシカルスコープはダイナミックではないスコープ、
つまり現代のほとんどのプログラマーが「スコープとはこういうものだ」
と考えているスコープです
つまり構文の包含関係によって変数が決められる方式です
構文の包含関係に基づくので、変数が解決されるのは構文解析時です
そんなわけで普段プログラムを書いていて、
レキシカルスコープとダイナミックスコープの違いを意識することはあまりなさそうですが
処理系の内部動作にまで視点を広げた時には、
興味深いトピックとして立ち上がってきそうですね