From db44bb9e7a3de608fe827a0f86eb80985447ed15 Mon Sep 17 00:00:00 2001 From: Jon Rafkind Date: Thu, 7 Jan 2010 23:23:56 +0000 Subject: [PATCH] add infinite-generator and make-repeated-sequence-generator svn: r17559 --- collects/scheme/generator.ss | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/collects/scheme/generator.ss b/collects/scheme/generator.ss index 8880ba9b02..2724d6a972 100644 --- a/collects/scheme/generator.ss +++ b/collects/scheme/generator.ss @@ -4,7 +4,8 @@ scheme/control scheme/stxparam scheme/splicing) -(provide yield generator in-generator infinite) +(provide yield generator in-generator infinite-generator + make-repeated-sequence-generator) ;; (define-syntax-parameter yield ;; (lambda (stx) @@ -62,6 +63,12 @@ (define (generator) (cont)) generator)) +(define-syntax-rule (infinite-generator body0 body ...) + (generator + (let loop () + body0 body ... + (loop)))) + (define stop-value (gensym)) (define-sequence-syntax in-generator @@ -74,9 +81,9 @@ #'[(id ...) (in-producer (generator body0 body ... stop-value) stop-value)]]))) -(define (infinite sequence) - (generator - (for ([i (in-cycle sequence)]) +(define (make-repeated-sequence-generator sequence) + (infinite-generator + (for ([i sequence]) (yield i)))) #|