タグ

継続に関するNetPenguinのブックマーク (4)

  • 限定継続を実現するScalaコンパイラプラグインを試してみる - kmizuの日記

    現在、Scalaでファーストクラスの継続を扱うことはできないが、Scala 2.8からは、コンパイラプラグインという形で、限定継続(Delimited Continuation)を扱う機能が提供されることになっている。2.8は未だリリースされていないが、Scala 2.8のnightly buildと、コンパイラプラグインのソースをリポジトリから入手すれば、限定継続の機能を試してみることができるようだ。 というわけで、試してみた(参考:http://blog.richdougherty.com/2009/02/delimited-continuations-in-scala_24.html)。 Scala 2.8のnightly buildをダウンロード Delimited Continuationを実現するコンパイラプラグインをリポジトリから入手 >svn co http://lamps

    限定継続を実現するScalaコンパイラプラグインを試してみる - kmizuの日記
  • Scheme/継続 - Wikibooks

    Schemeは継続(continuation)という、たいへん強力で柔軟な制御機構を備えています。継続を用いれば大域脱出、コルーチン、疑似マルチタスク、バックトラックといった特殊な制御を必要とするプログラムを効率的に記述することができるのです。しかし一方でその抽象度の高さから、「継続は難しいもの」という印象も強いようです。 ここでは継続の正確な定義はとりあえず後に回し、直感的な観点から継続を導入してみたいと思います。 話を簡単にするため、今全ての手続きが1-in/1-outであるような1-Schemeというものを考えます。例えば: (define (double x) (* x x)) (double 2) => 4 (define (add1 x) (+ x 1)) (add1 2) => 3 のような手続きが1-Scheme手続きです。 (なおSchemeではlambdaを自由に導入で

  • Practical Scheme

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

    Practical Scheme
  • Scalaの限定継続を使って、C#のyieldぽいものを実現するライブラリを書いてみた - kmizuの日記

    Scalaの限定継続を使って遊んでいたら副産物的にできたもので、実用に供することができるものではないですが、まあこんなこともできますという例として。なんかキャストとか使っていてあまり綺麗じゃないですが、型安全なように書こうとすると複雑になる上に、どうもたまたま自分の書いたコードがコンパイラのバグを踏んでしまったらしく、コンパイラが例外吐いて落ちたので仕方なくこうなっています。ただし、型安全でないのはライブラリ内部の実装だけであって、Generatorのユーザは型安全に使えるようになっている(はず)です。 //scala 2.8.0 + continuation pluginが無いとコンパイルできない import scala.continuations.ControlContext._ import scala.continuations._ import scala.collection

    Scalaの限定継続を使って、C#のyieldぽいものを実現するライブラリを書いてみた - kmizuの日記
    NetPenguin
    NetPenguin 2010/01/09
    継続使用例
  • 1