タグ

callccに関するkgbuのブックマーク (7)

  • Greenbear Diary - call/ccの7つの典型的な使い方

    ■ [scheme][ruby] call/ccの7つの典型的な使い方 わだばさん(でいいのかな?)のところで紹介されていたCall with Current Continuation Patternsをちょっと見てみた。 7/26 第9回 慢性的CL勉強会@Lingr 8時だョ!全員集合まとめ - わだばLisperになる - cadrグループ それによると、callccの典型的な使い方には以下のようなものがあるらしい。 (無限)ループからの脱出 再帰からの脱出 Cでいうcontinue 脱出+再入 コルーチン non-blindな(??)バックトラッキング マルチタスク で、だ。 1, 2, 3は、breakとかcontinueがある言語なら普通にできる。 5や4の一部は、PythonのジェネレータとかRuby1.9のFiberでできる。 7はコルーチンやスレッドを使えばできる。 とな

    Greenbear Diary - call/ccの7つの典型的な使い方
    kgbu
    kgbu 2008/07/31
    コメント欄も注目したい
  • callcc-lib

    Non trivial examples of Continuation of Ruby co-thread.rb (CoThread: a generic library -- step-wise threading) proc.rb (Proc by Continuantion) co-queue.rb (Queue by Continuation) co-sizedqueue.rb (SizedQueue by Continuation) generator.rb (external iterator, EndOf-type) iterator.rb (external iterator, hasMore?-type) iterator2.rb (external iterator, hasMore?-type, cofork version) sync-eqch.rb (synch

  • callccによる排中律の証明 - sumiiのブログ

    Wadlerのパクリ。というか劣化コピー。 悪魔:「あなたが私と契約してくれたら、(A)『私があなたに一億円をあげる』、(B)『あなたが私に一億円をくれたら、どんな願いでもかなえてあげる』のどちらかをして差し上げます。(A)と(B)のどちらにするかは、私が決めます。」 人間:「どちらにせよ害はなさそうなので、じゃあ契約します。」 悪魔:「はい、では私は(B)を選びます。」 人間:「やっぱりそう来るか。でも一億円なんて持ってないし、まあいいや。」 (十年後) 人間:「気になってしょうがないので、悪いことをして一億円を集めました。だから願いをかなえてください。」 悪魔:「そりゃどうも(と一億円を受け取る)。では私は(A)を選びます。はいどうぞ(と一億円を返す)。」 ICFP 2003の会場ではWadlerとShiversが壇上で寸劇をやりました(当)。λ式で書くと callcc(λk:¬(T

    callccによる排中律の証明 - sumiiのブログ
  • 継続

    継続、continuationと来ればやはりSchemeの話になるのだろうか。一般社会で schemeと言えば「すきーむ(n)計画。陰謀。」であるがソフトウェア業界で Schemeと言ったらLispの一種のことだ。Lispには変種が腐るほど存在するが、 Common Lispと並んで有名なのがSchemeである。Common Lispが標準化の課程でゴテ ゴテと装備して巨大化したのに対し、Schemeは遥かにコンパクトでクリアな仕 様を持つ。またSchemeとは言語の一般名であり、その実装にはGaucheとか scmとかguileとかMIT Schemeなどがある。 さてCall/CC、正式名称Call with Current Continuation、について 説明しよう。Call/CCはちょっと見はsetjmp/longjmpと同じように見えるのだが、 スタックが深くなる方向にもジャ

  • なんでも継続

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

  • Matzにっき(2004-07-23)

    << 2004/07/ 1 1. [OSS]「オープンコミュニティーの確固たる盟主」をアピールするSunのマクニーリーCEO 2 1. [morg]基設計完 3 1. [家族]希少生物発見 4 1. [教会]松江 5 1. [morg]実装フェーズ 6 1. [OSS]Javaのオープンソース化で苦悩するサン--レッシグらの助言も 2. CNETにトラックバックが届かない 3. Sunと互換性 7 1. [OSS]オープンソースによる互換性の喪失 8 1. [OSS]SunがJavaをオープンソース化した方が良い4つの理由 2. [morg]バックエンドほぼ完了 9 1. 健康診断 2. Estraier 3. [Morg]フロントエンド 4. [OSS]風博士 5. [OSS]フォークと互換性 6. 期日前投票 10 1. [家族]図書館 2. [OSS]風博士(2) 11 1. [教

    kgbu
    kgbu 2007/06/25
    継続の実用例とか
  • Route 477(2007-06-20)

    ■ [ruby][event] Ruby勉強会@関西-16「30分でわかるcallccの使い方」 先週末のRuby勉強会@関西で、Rubyにおけるcallccの使い方について発表させていただきました。 スライド: pdf ppt 継続の説明については「なんでも継続」がよく参照されるんだけど、 ちょっと説明がボトムアップすぎると思うので(僕も最初に読んだときは全然分からなかった)、「callccで何ができるか」という応用面から攻める 構成にしてみました。 最初は「継続かわいいよ継続」「それをすてるなんてとんでもない」と思ってたんだけど、 いろいろ調べてるうちになんでcallccが嫌われるのかが理解できてしまった。callccはかわいいけど、非常に手のかかる奴らしい。 しかも、面白い利用例はいっぱいあるけど実用的な例があんまりないんだよね^^;。 callccが無くなるとRubyの「かっこよさ

    Route 477(2007-06-20)
  • 1