(callcc (fun k -> k 7)) + 3
(callcc (fun k -> 7)) + 3
これらはそれぞれ何を評価し、その理由は何ですか?
(callcc (fun k -> k 7)) + 3
(callcc (fun k -> 7)) + 3
これらはそれぞれ何を評価し、その理由は何ですか?
これは宿題だと思います。そうでない場合は、そう言ってください。答えを直接お伝えします。
この方法call/cc
では、呼び出された時点で継続をキャプチャします。これらの例でそれが意味することは、 が表示されたときにcall/cc
、呼び出し全体をブラック ボックスに置き換えて、残っているものを確認することです。
(call/cc (fun k -> k 7)) + 3
=>
************************ + 3
呼び出し+ 3
の結果も同様call/cc
です。この「次に起こること」は、call/cc
パッケージ化してk
*.
k
ここで必要なのは、値 7 で呼び出すとどうなるかを理解することだけです。
2 番目の例では、まったく呼び出しませんk
。で特別なことをするわけではないので、特別なk
ことを期待call/cc
するべきではありません。
注: あなたが与えるコードは、ある種の ML のように見えます。私が知っている ML の方言にcall/cc
は. 構文を理解するのはそれほど難しくありません。
*'continuation' は、「次に何が起こるか」を言うのに少し良い方法ですが、それほど良い方法ではありません。