質問

この関連 何を話/cc?, もったいこのハイジャックにこのように自分の目的および一部の引数の類似にsetjmp/longjmpを回避しました。

私は十分で思を継続すると思うのでスナップショットの流通スタックです。いくの議論がなぜこれは面白かった、よくお使いいただくためにcontinuations.私の質問は、より具体的には、言いたかった機能を提供しの引数で呼び/cc?が記載されていないのはなぜ電話/ccだけを返し、現在の継続き尽くして取り組みたいと考えていてください(店舗でそれを呼び出すように、名称)?リンクからこの問題のhttp://community.schemewiki.org/?call-with-current-continuation-for-C-programmersで話"ほうので、クリーンのように継続すくするおそれがあるとき以降の飛躍に保存されます。", していると思う少なくなってきているのです。そうで必要以上に複雑です。

役に立ちましたか?

解決 4

反対に共通なのでnetiquette私の答えを自分の問題があり、エディタのプロバイダの答えです。

しばら始まったのは同様の質問で LtU.次のようにと考え言語でデザインを一日中いんじゃないの 回答 最後に蹴り上げられています。現在のものであることが明らかにされた。、によるEliまたはその作り感覚です。すべてが含まれまでの継続の適用を継続を設定します。

一つの ポスター でLtU書き:

"きか話/ccできる"げたりしないでください。 とemか/ccでは必要ないくつかの種類の試験をした場合バックジャンプの初期ます。基本的には、電話/ccでの使用の継続を継続でget/ccをクリックするとそのデータの継続を含むその利用く(通常)を追加する必要がありますテストの先頭に継続(すぐに次のget/cc/em)の分離を利用する"の継続部品"から"に続き"ます。"

この車です。

きません。

他のヒント

ご利用の場合は、構築のようにジェイは、それをつかんで、継続が、に設定されているすべての注文が既に甘えできていると続など。一方、 call/cc ものを掴んで利用できるアイデアを継続することが まだ 保留中"の表現です。例えば、最も単純な用途のcontinuations導入することによって、現在の種類 abort:

(call/cc (lambda (abort)
           (+ 1 2 (abort 9))))

ができませんので、運転について?解決方法/評価しようとした場合で

(define (get-cc) (call/cc values))
(let ([abort (get-cc)]) (+ 1 2 (abort 9)))

そのエラー応募について 9 していきます。こ abort ジャンプの let の新たな価値を 9 --であることをいいオリエンテーションを同一のほか、表現を、現在 abort9...

二つの追加に関する注意事項:

  1. のためにも、実践的な導入にcontinuations、 PLAI.
  2. call/cc 少し複雑で出かける機能を概念的にはより使いやすく構築する let/cc るので見つけることができる一部の実装のようにPLTます。上記の例になり (let/cc abort (+ 1 2 (abort 9))).

これはあまり汎用性になります。あなたがその行動をしたい場合は、あなただけで行うことができます:

(call/cc (lambda (x) x))

あなたは中継続の例の使用法を見てとることができ、「ダレル・ファーガソンとドワイトDeugoを。 『現在の継続パターンを呼び出します』。プログラムのパターン言語の第8回会議。2001年9月」 ( http://library.readscheme.org/page6.html に)、それらを書き換えしようコール/ ccのリターンを使用して、上記のように定義されます。

私は自分自身を尋ねることによって始まるお勧め:?何それはファーストクラスの継続であることを意味しています。

式の継続は、本質的に、データの2つの部分から構成され:その発現の最初、閉鎖(すなわち、環境)。そして第二に、式の結果を使って何をすべきかの表現。ファーストクラスの継続を持つ言語は、次に、これらの部品をカプセル化データ構造を有するものであり、そしてそれはそれとして、単にこれらのデータ構造を扱うであろう任意の他の

の呼び出し/ ccがこのアイデアを実現するため、特にエレガントな方法である:現在の継続は、何であるか-に-行うこと-で-式に適用する場合の手順は、何をするかのようにカプセル化する手順としてパッケージ化されました表現;続きをこのように表現するためには、単にこの手順の閉鎖は、それが呼び出されたサイトで環境が含まれていることを意味します。

あなたは他の方法でファーストクラスの継続のアイデアを実現する想像できます。彼らは、呼び出し/ ccのではないでしょう、と私は、このような表現が簡単になる可能性がどのように想像することは難しいます。

別れのノートで、私はバインド/ ccのを呼び出すことを好むどの、エリは言及LET / ccでの実装を検討します:

(define-syntax bind/cc
    (syntax-rules ()
        ((bind/cc var . body)
             (call/cc (lambda (var) . body)))))

や運動として、どのようにあなたがバインド/ ccのに基づいてコール/ ccのを実装するのでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top