タグ

CPSに関するyouzのブックマーク (6)

  • 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)
  • Continuation-passing style - Wikipedia

    In functional programming, continuation-passing style (CPS) is a style of programming in which control is passed explicitly in the form of a continuation. This is contrasted with direct style, which is the usual style of programming. Gerald Jay Sussman and Guy L. Steele, Jr. coined the phrase in AI Memo 349 (1975), which sets out the first version of the Scheme programming language.[1][2] John C.

    youz
    youz 2008/10/01
  • CPS(継続渡し方式)変換で裏返る理由 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    昨日、CPS(継続渡し方式)への変換を話題にしました。 最近CPSに凝っているらしいid:higeponさんが: 人間の皮が裏返る。外が内、内が外。みたいなイメージでしょうか。 と書いてます(CPSで思考する - higepon blog)。この裏返る感じを説明してみたいと思います。 プログラムが、3つの部分A, B, Cから構成されているとします。 A; B; C; A, B, Cは単一の文ではなくて大きなブロックでもかまいません。ブロックAの計算結果は変数aに代入され、ブロックBの計算結果は変数bに代入されるとしましょう。それぞれのブロックを関数化すると、次のようになります。 a = A(); b = B(a); c = C(b); 変数cの値がプログラム全体の結果となります。 中間変数a, bは不要なので除去すると: c = C(B(A())); 結局、プログラム全体の機能は、C(B

    CPS(継続渡し方式)変換で裏返る理由 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    youz
    youz 2008/10/01
  • Scheme:CPS

    pitecan.comへの移転のためか、増井さんちのWiki掲示板は以前のコンテンツがなくなっているようなので、Google cacheから転載します。-- SHIMADA (2003/07/26 05:41:15 PDT) 転載ここから ---- 「普通の奴らの上を行け」の追記文に出てくる、WebBasedアプリケーションと継続について。 継続と聞くとSchemeのcall/ccを連想するかもしれませんが、むしろここで重要なのは、「継続渡しスタイル(Continuation Passing Style, CPS)」です。CPSそのものは、 PerlでもRubyでもJavaでも書けます。どっちかというと、普通の手続き指向から考え方を変えるのがポイントなんで。 CPSのポイント。手続きは呼び出したら戻ってきません。行ったっきりです。ですから、その手続きの後で何か別のことをやりたいなら、「その

    Scheme:CPS
  • 継続渡しによる停止・再開可能な反復処理 - JavaScriptライブラリでお馴染みの$関数を関数スタイルで実装してみる

    ここ最近の Scheme プログラミングで得た感覚を踏まえ、各種 JavaScript ライブラリでお馴染みの $ 関数 (ID による要素検索) を、ごく簡易にですが、関数スタイルで実装してみました。 まずは実装を見ていただく前に、このような例を考えてみてください。 $("id").do_something(); ここで、"id" 要素が確実に見つかるかどうかが保証されていない (do_something が失敗するかもしれない) とします。すると、 var o = $("id"); if (o) { o.do_something(); } のように、いちいちテストをしなければいけませんよね。 これが、関数スタイルでは $("id", do_something); と書くだけで済みます。つまり、$ 関数自身が成否のチェックを行い、成功していればコールバック関数にオブジェクトを渡すように設

    継続渡しによる停止・再開可能な反復処理 - JavaScriptライブラリでお馴染みの$関数を関数スタイルで実装してみる
  • Index of Compiler Resume

    コンパイラ演習レジュメ '98年度情報科学実験IIコンパイラ演習のレジュメです。1から8までは田浦さん、9は遠藤さんによるものです。 ただし、ここにはレジュメの約半分、課題までの部分は載せてありますが、課題の答えは載っていません。(^^) 課題説明 仕様説明 CPSの定義 最適化(1) Closure変換 Register割り当て + 抽象機械コード生成 実マシンコード生成 Garbage Collection 一般教養としてのGarbage Collection 〔トップページへ〕 〔「ソフトウェアの作成」のindexページへ〕 <vu@is.s.u-tokyo.ac.jp> Last updated on 16 May, 1999

    youz
    youz 2008/10/01
    コンパイラ作成演習資料。CPS変換とかGCとか。
  • 1