継続の作り方

継続を作るためには、まずgotoを作らないと行けない気がしてきました。
今はapplyがapplyをよんで。。。という形でフローが制御をされているのですけど、その呼び出しのスタックを取っておいたり勝手に破棄したりできない言語では再帰呼び出しの途中にジャンプしてはいることなんてできないと。
この前書いた「returnのかわりに継続を呼び出すなんてのを普通の言語でやったらスタックあふれる」って話ともからむの。
なのでまずは呼び出すべき内容を連結リストに入れて、while「リストが空でないなら」「最初の一個を取り出して、次の一個(これが継続)を渡して呼ぶ。呼ばれたものがさらに何かを呼ぶ場合も一旦リストに入れて次に呼ぶべきものを返す。帰ってきてから改めてそれを呼ぶ」という感じになるのかな。