継続ベース部分評価

http://www.kmonos.net/wlog/95.html#_1946090312

まずいったん変数を返して(中略)全体の式を作らせてから、その外に let 束縛を追加して改めて全体の式として返す

Let-insertionというやつですね。継続ベース部分評価という手法の一部で、letもさることながらifの扱いが面白いです。if x then e2 else e3(xは値のわからない変数)みたいな式を部分評価するとき、まずe2のほうを返して結果をe2'とおき、それからe3のほうも返して結果をe3'とおくと、if式全体の部分評価結果はif x then e2' else e3'になる、という。例えば1+(if x then 2 else 3)+yの部分評価結果がif x then 3+y else 4+yになったりします。ご想像通り、+yの部分が大きな式だとコードサイズが爆発しますが(素朴な実装では)。自分にとっては長い間(=修士課程の2年間)、これ(let-insertionと"if-insertion")が限定継続の唯一の応用でした…!(モバイル計算以外)