diff --git a/collects/scheme/generator.ss b/collects/scheme/generator.ss index b19bcdd0c8..11e16d74b8 100644 --- a/collects/scheme/generator.ss +++ b/collects/scheme/generator.ss @@ -1,11 +1,11 @@ #lang scheme/base -(require (for-syntax scheme/base)) +(require (for-syntax scheme/base) + scheme/control + scheme/stxparam) -(require scheme/control) -(require scheme/stxparam) - -(provide yield lambda-generator define-generator) +(provide yield lambda-generator + define-generator in-generator) (define-syntax-parameter yield (lambda (stx) @@ -38,13 +38,18 @@ ;; set! is ugly but can we do better? (set! current next) value)) - (lambda (x) (add1 x)) + add1 0 (lambda (x) (not (eq? last current))) (lambda (v) (not (eq? last current))) (lambda (x v) (not (eq? last current))))))]) seq))])) +(define-syntax in-generator + (syntax-rules () + [(_ body0 bodies ...) + ((lambda-generator () body0 bodies ...))])) + (define-syntax define-generator (syntax-rules () [(_ (name args ...) body0 bodies ...)