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