TL;DR

プログラムの「残りの計算」を表す概念である。

仕組み

Racket には、継続を扱う call/cc という関数がある。call/cc は、プログラム実行の残りの部分を値として捕捉する。捕捉した継続は第一級オブジェクトとして扱える。これにより、例外のような非局所脱出やバックトラックを実現できる。

継続の考え方は、SECD マシンの論文に出てくる J operator に由来する。

Racket のリファレンスでは、評価の途中で次に簡約される式(redex)を囲む評価文脈を継続と呼ぶ。継続は、その式が値に簡約された後にどう「続ける」かを表す。継続は継続フレームの列に分けられ、評価が進むたびに今の継続にフレームが足されたり取り除かれたりする。

注意点

継続はコールバック関数とは別のものである。

関連

出典