大域脱出ぐらい常識よねー

for とかループで深くネストしているときに、一気に目的のレベルまで処理を中断して脱出する、すなわち大域脱出をしたくなることってたまにあるよね。breakだと、1つ上のレベルまでしか脱出できないわけですが、昨年授業でJavaをやっていたときに何度かそれで困った。どうすればいいのかわからず、結局フラグ立ててif文で抜けるという稚拙でアホなコードを書いていた。

例外処理を使うとできることを、つい最近知りました。どこの素人だよお前は。

きっかけは、Schemeについて色々なものを読んでいるうちに、「call/ccによる大域脱出」とか「継続を使うと例外処理ができる」とかが頭の中で集積して、あるときパチンと気がついたわけです。調べたらどうやら常識っぽいし。

普通の言語の例外処理だと、catchしても例外についてしか扱えないけど、Schemeの場合はcall/ccつかえば継続まで取り出せるから*1、より柔軟な処理が可能なんじゃね?やっぱりScheme最強じゃね?

*1:call/ccについてまだ理解していないので、間違ってるかも