動的寿命 1
- 呼び出された手続きの本体が始まる時,その動的寿命に入る
- 呼び出された手続きが戻る時,その動的寿命は終わる
(dynamic-wind
(lambda () (display "a"))
(lambda () (display "b"))
(lambda () (display "c")))
abc#<undef>
gosh>
動的寿命 2
- 動的寿命の期間外にとらえられた継続が,実行がその動的寿命の中にあるときに起動されたならば,その時もまた,その動的寿命は終わる。
(define cont '())
cont
(begin
(display "1")
(display (call/cc (lambda (c) (set! cont c) "2")))
(display "3"))
123#<undef>
(dynamic-wind
(lambda () (display "a"))
(lambda () (display "b") (cont "2 again"))
(lambda () (display "c")))
abc2 again3#<undef>
動的寿命3
- (call/cc を使って) 動的寿命の期間中にとらえられた継続が,実行がその動的寿命の中にないときに起動されたならば,その時もまた,その動的寿命に入る。
(define cont '())
cont
(dynamic-wind
(lambda () (display "a"))
(lambda ()
(display "1")
(display (call/cc (lambda (c) (set! cont c) "2")))
(display "3"))
(lambda () (display "c")))
a123c#<undef>
gosh> (cont "2 again")
a2 again3c#<undef>