(define producer #f)
(define (produce)
(let loop ((i 0))
(call/cc (lambda (k)
(define item (string-append "item-" (number->string i)))
(display "Producing ") (display item) (newline)
(set! producer k)
(consume item)))
(loop (1+ i))))
(define (consume item)
(display "Consuming ") (display item) (newline)
(sleep 1)
(producer))
(produce)