【関数型言語】継続渡し(CPS:Continuation-passing style)

計算途中の文脈(コンテキスト)を保存し、任意のタイミングで計算を途中から継続できるようにするしくみらしい。

ここで生じた疑問。

コンテキストとは具体的にはどのような内容なのか?

OSのコンテキストスイッチの場合、

になる。クロージャーを持っている言語ならば、CPSを実現できるらしい。

C++ならば、ラムダ式でキャプチャーした内容を保存できる、ということだろう。だとすると、レジスタの値は保存されない。ローカル変数と引数はスタックに保存されているが、これらはラムダ式で使える。あ、C++ラムダ式て、その場で実行するのではなく、あとで実行ってできたっけ?