私の人生では、続きが理解できません。問題は、私が理解していないという事実に起因していると思います。私が本やオンラインで見つけた例はすべて非常に些細なものです。彼らは私に疑問に思います、なぜ誰かが継続を望んでいるのでしょうか?
TSPLからの典型的な非実用的な例を次に示します。これは、このテーマについて非常によく知られている本だと思います。英語では、継続を計算の結果で「何をするか」と表現します。わかりました、それは理解できます。
次に、2 番目の例を示します。
(call/cc
(lambda (k)
(* 5 (k 4)))) => 4
これはどのように意味がありますか?? k
さえ定義されていません!(k 4)
計算すらできない場合、このコードをどのように評価できますか? 言うまでもなく、引数を最も内側の式にcall/cc
引き抜いて返すことをどのように知っていますか? 4
どうなる(* 5 ..
?? この最も外側の式が破棄される場合、なぜそれを書く必要があるのでしょうか?
call/cc
次に、再帰からの非ローカルな終了を提供するために使用する方法について、「それほど」自明でない例を示します。これはフロー制御ディレクティブのように聞こえます。つまりbreak/return
、計算ではなく、命令型言語のように聞こえます。
そして、これらの動きを経る目的は何ですか?誰かが計算の結果を必要とする場合は、それを保存して、必要に応じて後で呼び出すだけではどうですか。