継続
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の式が評価される時、そこには評価の結果を待つ継続が一つ待機している。継続は計算の(デフォルトの)未来全体を表している。
処理全体を時間軸で見た時に、ある点における継続とは、「その点以降の処理のこと」
関数呼び出しで説明されることが多いが、別にそれに限らない
例
こういう手続き foo
, bar
, f
を定義する
lisp; foo, barと出力する手続きを定義
(define (foo) (print "foo"))
(define (bar) (print "bar"))
; 「foo手続きを呼び、その後bar手続きを呼ぶ」をする手続きfを定義
(define (f) (foo) (bar)) ; ①
(f)
①の部分の foo
にとっての継続は、 bar
の呼び出し、とそれ以降の処理
①の部分の bar
にとっての継続は、 f
の呼び出しから元に戻るという操作、とそれ以降の処理
例
参考