Make in-generator work when yield returns multiple values
This commit is contained in:
parent
bdf98ebbe2
commit
4bca9842f5
|
@ -113,9 +113,11 @@
|
|||
(lambda (stx)
|
||||
(syntax-case stx ()
|
||||
[((id ...) (_ body0 body ...))
|
||||
(with-syntax ([(stops ...) (syntax-case #'((id stop-value) ...) ()
|
||||
[((x v) ...) #'(v ...)])])
|
||||
#'[(id ...)
|
||||
(in-producer (generator () body0 body ... stop-value)
|
||||
stop-value)]])))
|
||||
(in-producer (generator () body0 body ... (values stops ...))
|
||||
(lambda xs (eq? (car xs) stop-value)))])])))
|
||||
|
||||
(define (sequence->generator sequence)
|
||||
(generator () (for ([i sequence]) (yield i))))
|
||||
|
|
|
@ -242,6 +242,13 @@
|
|||
(for/list ([(x i) (in-indexed (in-generator (yield 1) (yield 2) (yield 3)))])
|
||||
(list x i)))
|
||||
|
||||
(test '[(1 2) (3 4)] 'for*-generator
|
||||
(for*/list ([(n after)
|
||||
(in-generator
|
||||
(yield 1 2)
|
||||
(yield 3 4))])
|
||||
(list n after)))
|
||||
|
||||
(let ([helper (lambda (i)
|
||||
(yield (add1 i)))])
|
||||
(test '(1 2 3) 'parameterized-yield
|
||||
|
|
Loading…
Reference in New Issue
Block a user