[plt-scheme] auxiliary macros
I believe what you want is this:
(define-syntax define/y
   (syntax-rules ()
     [(_ yield-name (name arg ...) body ...)
      (define (name arg ...)
        (define (yield-name x)
          (call/cc
           (lambda (resume-here)
             (set! name (lambda () (resume-here 'dummy)))
             (exit-with x))))
        (define exit-with #f)
        (call/cc
         (lambda (k)
           (set! exit-with k)
            body
           ...)))]))
(define/y yield (step)
   (yield 1)
   (yield 2)
   (yield 3)
   'finished)
You can now ask yourself two questions on improving this code:
1. How can I use control.ss so that I don't need two call/cc's to  
implement a switch of control?
2. How can I use the macro system to eliminate the 'yield-name' part  
of the macro?
Depends in which order you want to improve your skills.
;; ---
You may also realize that step is a non-re-entrant function. Argh.  
But I didn't choose that part :-)
-- Matthias