メモ

最近、頭の中の言語がStack-basedだったのがconcatenativeに切り替わった気がする。極端なことを言えばStackでなくても良い。
たぶん、CPSの表現の一形態としてStack+固定コード形式がある。むしろ固定コードが前提にあって、一部だけを動的にした結果がReturnStackというものなのだろう。
例えば、巨大なQueueに実行コードが格納されていて、一つずつpopして実行するというイメージでも良い。Queue自体を切り替えたり、先頭に別のコードを押し込んだりできる。これならCPSそのものだ。
実用上、実行コードの大半は動的に生成する必要がない。条件分岐や手続き呼び出しなど、ごく一部の継続を実行時に継ぎ合わせるだけで済む。その繋ぎ合わせ情報のことをReturnStackと呼ぶ。「Return」は単に歴史的経緯で付けられた名前にすぎない。