タグ

CPS変換に関するohnishiakiraのブックマーク (3)

  • Practical Scheme

    Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を紐

    Practical Scheme
  • 情報科学実験II資料 (4) CPS変換のアルゴリズム

    CPS変換はMin-Schemeの関数定義を, 対応するCPSの関数定義に変換する. その変換のアルゴリズムがどのように働くべきかを見るために複合式: (+ (* a x) (* b y)) の例を見る. これを例にあげたのはわかりやすさのためで, 後には引数の 数がいくつであってもいいような一般的なアルゴリズムを開発する. 目標は, これが以下のようなCPS式に変換されることである. (* [a x] [p] [(* [b y] [q] [(+ [p q] [r] [(... use r ...)])])]) ここで, (... use r ...)というのは(+ (* a x) (* b y))の値を 使う式であり, program text の上では, (+ (* a x) (* b y))の外側の 式になる. もしそのような式がなければ, rの値を返り値として返すCPS 式である.

  • CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    久々にThe n-Category Cafeを見たら、Mike Stayによる"The Continuation Passing Transform and the Yoneda Embedding"なんて記事がありました。 米田埋め込みは圏論ではお馴染み。継続渡しへの変換はコンピュータ・プログラミングではお馴染み。 この2つは、実は同じものなんだよ。なんで、誰もこのことを言わないんだろうね? The Yoneda embedding is familiar in category theory. The continuation passing transform is familiar in computer programming. They're the same thing! Why doesn't anyone ever say so? Mike Stayのこの記事、面白いのだ

    CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1