add infinite-generator and make-repeated-sequence-generator
svn: r17559
This commit is contained in:
parent
530238a12b
commit
db44bb9e7a
|
@ -4,7 +4,8 @@
|
||||||
scheme/control
|
scheme/control
|
||||||
scheme/stxparam scheme/splicing)
|
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
|
;; (define-syntax-parameter yield
|
||||||
;; (lambda (stx)
|
;; (lambda (stx)
|
||||||
|
@ -62,6 +63,12 @@
|
||||||
(define (generator) (cont))
|
(define (generator) (cont))
|
||||||
generator))
|
generator))
|
||||||
|
|
||||||
|
(define-syntax-rule (infinite-generator body0 body ...)
|
||||||
|
(generator
|
||||||
|
(let loop ()
|
||||||
|
body0 body ...
|
||||||
|
(loop))))
|
||||||
|
|
||||||
(define stop-value (gensym))
|
(define stop-value (gensym))
|
||||||
|
|
||||||
(define-sequence-syntax in-generator
|
(define-sequence-syntax in-generator
|
||||||
|
@ -74,9 +81,9 @@
|
||||||
#'[(id ...)
|
#'[(id ...)
|
||||||
(in-producer (generator body0 body ... stop-value) stop-value)]])))
|
(in-producer (generator body0 body ... stop-value) stop-value)]])))
|
||||||
|
|
||||||
(define (infinite sequence)
|
(define (make-repeated-sequence-generator sequence)
|
||||||
(generator
|
(infinite-generator
|
||||||
(for ([i (in-cycle sequence)])
|
(for ([i sequence])
|
||||||
(yield i))))
|
(yield i))))
|
||||||
|
|
||||||
#|
|
#|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user