add infinite-generator and make-repeated-sequence-generator

svn: r17559
This commit is contained in:
Jon Rafkind 2010-01-07 23:23:56 +00:00
parent 530238a12b
commit db44bb9e7a

View File

@ -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))))
#|