もう少し分かりやすく作れないだろうか

再帰に頼っていたところを再帰無しにするのって難しい。さて、lambdaも書き換えないといけない。そして、適当に完了。
継続をオブジェクトにするところまではできたと思う。ただ、call/ccをどう作ろうか悩んでる。call/ccが関数なら関数は好きなタイミングで継続を取り出せないといけないけど継続を取り出すのはcall/ccだけなので、すべての関数が継続を取り出せるようにするのは無駄。実行環境を参照できる特別な関数にして対応する予定。継続もファーストクラスオブジェクトとかいう身分なんだから専用のインターフェースを作っても問題ないような気もするけど、表面的には引数を一つ取るだけの関数なので悩む。