31

私の人生では、続きが理解できません。問題は、私が理解していないという事実に起因していると思います。私が本やオンラインで見つけた例はすべて非常に些細なものです。彼らは私に疑問に思います、なぜ誰かが継続を望んでいるのでしょうか?

TSPLからの典型的な非実用的な例を次に示します。これは、このテーマについて非常によく知られている本だと思います。英語では、継続を計算の結果で「何をするか」と表現します。わかりました、それ理解できます。

次に、2 番目の例を示します。

(call/cc
  (lambda (k)
    (* 5 (k 4)))) => 4 

これはどのように意味がありますか?? kさえ定義されていません!(k 4)計算すらできない場合、このコードをどのように評価できますか? 言うまでもなく、引数を最も内側の式にcall/cc引き抜いて返すことをどのように知っていますか? 4どうなる(* 5 ..?? この最も外側の式が破棄される場合、なぜそれを書く必要があるのでしょうか?

call/cc次に、再帰からの非ローカルな終了を提供するために使用する方法について、「それほど」自明でない例を示します。これはフロー制御ディレクティブのように聞こえます。つまりbreak/return、計算ではなく、命令型言語のように聞こえます。

そして、これらの動きを経る目的は何ですか?誰かが計算の結果を必要とする場合は、それを保存して、必要に応じて後で呼び出すだけではどうですか。

4

4 に答える 4

9

これが私のクラスノートのテキストです: http://tmp.barzilay.org/cont.txt . これは多くの情報源に基づいており、大幅に拡張されています。動機、基本的な説明、それがどのように行われるかについてのより高度な説明、単純なものから高度なものまでのかなりの数の例、さらには区切られた継続についてのいくつかの簡単な議論があります.

(ここにテキスト全体を入れて遊んでみましたが、予想通り、120k のテキストはそれほど喜ばしいものではありません。

于 2013-05-13T19:27:36.053 に答える