dynamic-windマジぱねぇっす
(dynamic-wind (lambda () (print 'before1)) (lambda () (define cont #f) (print 1) (dynamic-wind (lambda () (print 'before2)) (lambda () (print 2) (set! cont (call/cc values))) (lambda () (print 'after2))) (dynamic-wind (lambda () (print 'before3)) (lambda () (print 3) (if (procedure? cont) (cont 42) cont)) (lambda () (print 'after3)))) (lambda () (print 'after1)))
before1 1 before2 2 after2 before3 3 after3 before2 after2 before3 3 after3 after1 => 42