#何かする時に、それをしても安全かどうかチェックして、危険だったら何か調整してリトライする、ってコード、良く書くじゃん?
#(define (何かする arg)
(if (何かしても大丈夫? arg)
(本当に何かする arg)
(begin
(ちょい調整 arg)
(何かする arg))))
#それまでリトライの無かったコードにリトライをつけるのに、こういうふうに書くと基本的に一個if式をつけるだけなんですんごく楽なんだけど、末尾呼び出し最適化が無いと予想外にスタックを消費しちゃって、「わざわざ」ループに書き直すハメに。こういうケースって再帰の方がずっと「自然」だとワシは思うのであった。
#(あ、上の例はSchemeだけど、今書いてるコードはCL。要はやっぱりTCOないと辛いなあってだけ。)
#Schemeだとnamed letでもすぐ書けるんだけどCLだと… tagbody&gotoはずいぶん古めかしいし。 RT: @dico_leque: (let retry () ...) みたいなのよく書く