動的寿命 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>