継続渡しスタイル(CPS)
関数が決して「returnしない」プログラミングスタイル。代わりに「次に何をするか」を表す継続(コールバック)を受け取り、結果をそれに渡して呼び出す。
Node.jsのコールバックでおなじみの形で、fs.readFile(path, (err, data) => ...)はCPSである。コンパイラの内部表現としては強力で、SML/NJ、MLton、Chez Scheme、GHC(STG形式のあと)などが使う。例外、async/await、ジェネレーター、コルーチン、複数回呼べる継続(Schemeのcall/cc)の実装を可能にする。プログラマーが直接CPSで書くことはまれで、コンパイラの中間層である。CPS変換を使えば、末尾呼び出し最適化のない言語でも末尾呼び出しの効果が得られる。