継続
continuation
処理全体を時間軸で見た時に、ある点における継続とは、「その点以降の処理のこと」
以降の処理を全て行う関数、みたいなもの
この関数contに、最低限の引数を与えて、以降の処理を呼ぶ
雑に「末尾呼び出しコールバック関数」と言えそう
Whenever a Scheme expression is evaluated there is a continuation wanting the result of the expression. The continuation represents an entire (default) future for the computation. ref Schemeの式が評価される時、そこには評価の結果を待つ継続が一つ待機している。継続は計算の(デフォルトの)未来全体を表している。
処理全体を時間軸で見た時に、ある点における継続とは、「その点以降の処理のこと」
https://gyazo.com/d1c98d8a597515835c9a52fb40cc4fbb
関数呼び出しで説明されることが多いが、別にそれに限らない
例
こういう手続きfoo, bar,fを定義する
code:lisp
; foo, barと出力する手続きを定義
(define (foo) (print "foo"))
(define (bar) (print "bar"))
; 「foo手続きを呼び、その後bar手続きを呼ぶ」をする手続きfを定義
(define (f) (foo) (bar)) ; ①
(f)
code:result
foo
bar
①の部分のfooにとっての継続は、barの呼び出し、とそれ以降の処理
①の部分のbarにとっての継続は、fの呼び出しから元に戻るという操作、とそれ以降の処理
例
参考