タグ

JavaScriptとcpsに関するishideoのブックマーク (2)

  • 継続渡し形式(CPS)Javascriptプログラミング

    継続とはコンピュータがプログラムを実行しているときの次に何をするのかを表す概念です。詳しくは何でも継続のページを参照し欲しいのですが、継続はプログラムを実行する上で欠かせない存在となっています。ソースコードのある行を実行したら次の行を実行します。関数(サブルーチン)を終了したら、呼び出し元に戻ります。これらは全て継続です。あたりまえと言えばあたりまえのことです。しかし、このあたり前のことを明確に意識しようとすると途端に目の前に霞がかかったようになります。 プログラミングの世界の概念には、禅の公案のようなものがある。それを説明する文章はほんの一文なのに、最初に目にする時、その文は全く意味をなさない、暗号のように感じられる。だがひとたびその概念を理解すると、その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも「継続」は最も謎めいたもの

  • Javascriptで継続渡し - ヒビノキロク

    id:nozom:20060317#1142577630の続き。世界で最も誤解された言語とも呼ばれるJavascriptを使って継続渡しを書いてみた。 なお、Javascriptの処理系としてRhino*1を使った。参考文献は『入門Javascript』(ISBN:4756138713)。 function fib(n) { if ((n == 1) || (n == 2)) return 1; else return fib(n - 1) + fib(n - 2); } function fib_cps(n, k) { if ((n == 1) || (n == 2)) return k(1); else return fib_cps(n - 1, function(v1) { return fib_cps(n - 2, function(v2) { return k(v1 + v2);

    Javascriptで継続渡し - ヒビノキロク
  • 1