diff options
author | Chris K. Jester-Young <cky944@gmail.com> | 2013-03-18 12:21:37 -0400 |
---|---|---|
committer | Chris K. Jester-Young <cky944@gmail.com> | 2013-03-18 14:59:50 -0400 |
commit | c33f45bef09523bea1545845c41cc6eb9068d6ae (patch) | |
tree | 8b0e2e81ea756a910460fd3c64b840c0c65864fb | |
parent | 41d0789599accd3030d22fccf4884e59b85147ed (diff) | |
download | guile-c33f45bef09523bea1545845c41cc6eb9068d6ae.tar.gz |
Simplify stream-unfolds further, based on Mark H. Weaver's feedback.
* module/srfi/srfi-41.scm (stream-unfolds): Don't use a promise to
hold the result of the generator call. Originally I did that to
avoid calling the generator more times than necessary, but Mark
demonstrated that this code simplification doesn't affect that.
-rw-r--r-- | module/srfi/srfi-41.scm | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/module/srfi/srfi-41.scm b/module/srfi/srfi-41.scm index fd5ec32e2..45b03ad3b 100644 --- a/module/srfi/srfi-41.scm +++ b/module/srfi/srfi-41.scm @@ -395,12 +395,8 @@ (define (stream-unfolds gen seed) (define-stream (generator-stream seed) - ;; This uses delay/force, not stream-delay/stream-force, since only - ;; the built-in version supports multiple-value results. - (define promise (delay (gen seed))) - (stream-cons (receive (_ . items) (force promise) - (list->vector items)) - (generator-stream (first-value (force promise))))) + (receive (next . items) (gen seed) + (stream-cons (list->vector items) (generator-stream next)))) (define-stream (make-result-stream genstrm index) (define head (vector-ref (stream-car genstrm) index)) (define-stream (tail) (make-result-stream (stream-cdr genstrm) index)) |