だから私はcall/cc
Schemeでこのすべてを理解しようとしています。以下は私が取り組んでいるコードです:
(+ 1 (call/cc
(lambda (k)
(if (number? k)
(call/cc (lambda (k) (k (- 1 k))))
(k 4)))))
ここで、最初の括弧内に 2 つの引数を追加し始めます。1
熱心な評価のために評価しなければならない残りの部分。そのため、call/cc
引数を 1 つ受け入れる関数があり、call/cc
呼び出しによって評価されます。(私は正しいですか?) 同時に、これまでに起こったことの残りの部分が最初の括弧内に保持されます。つまり(+ 1 [])
、これは「継続」です。(私は正しいですか?) それでk
、先ほど説明したように、継続でlambda を呼び出します(+ 1 [])
。関数では、これが数字であるかどうかを尋ねますが、そうではなく、「then」を実行します。ここで「道に迷った」のですが、この秒は何をしcall/cc
ますか? (k 4)
この全体を評価するために、何が呼び出され5
ますか?