From 78471a5b86bb86b297ed3234c7b7f5b803525e4a Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Thu, 27 Aug 2009 16:08:27 +0000 Subject: [PATCH] better name-age svn: r15815 --- collects/scheme/generator.ss | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/collects/scheme/generator.ss b/collects/scheme/generator.ss index 49da6e4565..b175170f17 100644 --- a/collects/scheme/generator.ss +++ b/collects/scheme/generator.ss @@ -22,16 +22,18 @@ (define-syntax-rule (generator body0 body ...) (let ([tag (make-continuation-prompt-tag)]) - (define y - (let ([yield (lambda (r) (shift-at tag k (set! cont k) r))]) yield)) - (splicing-syntax-parameterize ([yield (make-rename-transformer #'y)]) + (define yielder + (let ([yield (lambda (val) (shift-at tag k (set! cont k) val))]) + yield)) + (splicing-syntax-parameterize ([yield (make-rename-transformer #'yielder)]) (define (cont) (reset-at tag - (let ([r (begin body0 body ...)]) + (let ([retval (begin body0 body ...)]) ;; normal return: - (set! cont (lambda () r)) - r)))) - (lambda () (cont)))) + (set! cont (lambda () retval)) + retval)))) + (define (generator) (cont)) + generator)) (define stop-value (gensym))