普通の、関数(またはメソッド)を主体とした言語では、関数呼びだし(など)のたびに、 ローカル変数や戻る場所など関数一つの実行のために必要な情報を構造体に格納し、 それをスタックに積む。関数から戻るとスタックの先頭の構造体が pop されて実行が 前のメソッドに戻る。 ruby の実行もやはりメソッドの連鎖に他ならないから、やはり同様の実行イメージを 持っている。ただし以上のような単純なイメージはあくまで「概要は」そうであるという 話であって、実際にはもっと複雑なことになっている。それというのも Ruby には イテレータのように実行の経路自体をスクリプトから変化させる機能があるため、 単純なスタックの push/pop だけでは実装できないからだ。そのためスタックに 積む構造体もひとつでなく機能ごとに分割されており、実行中に複雑に積みかえられる。 具体的にはその構造体は struct FR