原です。

私も self をすげ替えるのはナシだと思いますが、call_current_block
の導入は(これは名前が長すぎると思うけど)いいんじゃないかと思い
ます。self すげ替えと一緒に論じられるのはかわいそう。

一時的な、名前を持たない関数が欲しかったのにただ再帰のためだけに変
数に代入するのは残念な気がします。それに、変数のスコープに依らない
のは気持ちいいですよ。カットアンドペーストも用意だし。(それを言っ
たら普通のメソッドにも自分自身を表すモノが欲しくなるか。)

>ただ、なんで単純再帰だけをそんなに気にかけるのかというのは不思議です。
>相互再帰とか、あるいは補助関数を使うだけでも名前で参照することが必要に
>なるわけで、そっちは気にならないのかなぁ?

単純再帰と相互再帰じゃ使用頻度のオーダーが2桁違うでしょう。何らか
の条件を満たすものを、自分自身への変換の不動点と捉えるのは良く行わ
れることですしね。

>まぁ、他にも要するに dynamic scope の強力さを不幸にも再発見してしまっ
>ただけじゃないのかとか、定数だって情報隠蔽の対象になるだろうとか、関数
>をオブジェクトで表現してるんだから関数とオブジェクトのギャップのぶん表
>記が冗長になるのはしょうがないだろとか、結局欲しいのが memo つき関数な
>ら once みたいにやったほうがいいんじゃないのかとか、いくつか思うところ
>はあるわけですが、今のところ伝わるように書ける自信がないのでやめておき
>ます。

止めておくというよりも、始めているようにも見えないでもない。:-)