鍋あり谷あり

テーマを決めずに適当に書いています。

継続渡し

先日のタートルグラフィックス。
描画の経過が表示されるといいなと思い、考えてみた。
まず思いついたのは、javascript 1.7 の yield。これがあれば中断と継続が簡単にできるに違いないと思い、書いてみたら、実際に中断と継続が簡単に書けた。が。Firefox以外は対応していない模様。残念。

では、ということで考えたのが継続渡し。継続渡しって何だろう。というところから調べて考えて試行錯誤の末に書けたのが http://nabetani.sakura.ne.jp/turtle/ にあるもの。

まだあんまりわかっていないんだが、動くものにはなった。
今のところの感想は:

  • 今すべきことをした後、「今後すべきこと」をクロージャの形にする
  • 処理の順序が気になる場合は得策ではないような気がする
  • グローバルな状態を参照すると不幸になりやすい
  • 関数内で自分自身をn回(実行時に決定)呼んだりする場合はどうするんだろう

というところか。

Cで実現するのは難しそうだが、C++なら書けるんじゃないかと思うがどうか。JavaならGCがあるからそんなに苦労しないと思う。

あと。なぜか Opera で動かない。9.64なんだけど。
Safari4 でも Google Chrome でも Firefox 3.0 でも動くんだけどなぁ。