stream-partition is not incremental
Stephen McCracken 12 Mar 2003 02:31 UTC
I hope this comment is still relevant, as I joined the
discussion rather late. It intersects somewhat with
the discussions on space retention and stream-unfoldn.
The reference implementation of stream-partition
appears to evaluate the entire stream before returning
any results. As such, it has no advantages over a
function that operates on lists.
;; Obvious quick fix: This tests each element twice,
;; and it may have problems with space retention.
(define (stream-partition pred? strm)
(values
(stream-filter pred? strm)
(stream-filter (lambda (x) (not (pred? x)))
strm)))
It might be possible to write a stream-partition that
was incremental but still tested each element only
once. However, I think it would require explicit
shared state between the two result streams.
__________________________________________________
Do you Yahoo!?
Yahoo! Web Hosting - establish your business online
http://webhosting.yahoo.com