In article <F249zDabigPasSmz6Uu0000ec21 / hotmail.com>,
  "井上 浩一" <kyoui32 / hotmail.com> writes:

> loop{
>   print "A"
> }
> 
> これも作者の意図をしている場合もあるので、これだけでは判断付きにくい。よっ
> て、
> 
> $LOOP_ENABLE = false というグローバル変数を設けて、ループの善悪を決める。
> falseはループを認めないということで、同じ位置に戻った場合 Rubyのソースでルー
> プは必ずスタート位置があるので、
> そこを通過したら、FLAGを立て2回目回るとフラグを見て例外を発生させる。
> 例外=終了と位置づけている。
> 
> 例外としている点は、ここで強制終了されたら困る場合の保険で3回目通過した場合
> は、問答無用の強制終了を行う。

それはいろいろと困るのでは... と思ったのですが、似たような(でももっと
マシな)話を Eiffel で見かけたことがあることを思い出しました。ループ変
化表明という奴です。これは要するにループがまわるたびに単調に減少するが
負にはならない値に評価される(はず)の式をプログラマに書かせて、それ(ひ
とまわりごとに値が減少するが負にはならないこと)を確認するというもので
す。

Ruby のライブラリとして実現できるか少し考えたのですが、なんかきれいな
方法が思いつきません。
(表明一行では済まなくて、ローカル変数の定義が別に必要になってしまう。)

なんかうまい書き方ってありますかね?
(caller を使えばどうにかなる?)
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)