Next: streams range, Previous: streams ops, Up: streams [Index]
Return the suffix of the input stream that starts at the next element
after the first n elements. The output stream shares structure
with the input stream; thus, promises forced in one instance of the
stream are also forced in the other instance of the stream. If the
input stream has less than n elements, stream-drop returns
the null stream. See also stream-take.
Example:
(define (stream-split n strm)
(values (stream-take n strm)
(stream-drop n strm)))
Return the suffix of the input stream that starts at the first element
x for which (pred x) is #f. The output stream
shares structure with the input stream. See also
stream-take-while.
Example: stream-unique creates a new stream that retains only the
first of any sub–sequences of repeated elements.
(define-stream (stream-unique item= strm)
(if (stream-null? strm)
stream-null
(stream-cons (stream-car strm)
(stream-unique item=
(stream-drop-while
(lambda (x)
(item= (stream-car strm) x))
strm)))))
Take a non–negative exact integer n and a stream and return
a newly–allocated stream containing the first n elements of the
input stream. If the input stream has less than n elements, so
does the output stream. See also stream-drop.
Example: merge-sort splits a stream into two equal–length
pieces, sorts them recursively and merges the results:
(define-stream (merge-sort lt? strm)
(let* ((n (div (stream-length strm) 2))
(ts (stream-take n strm))
(ds (stream-drop n strm)))
(if (zero? n)
strm
(stream-merge lt? (merge-sort < ts) (merge-sort < ds)))))
Take a predicate and a stream and return a newly–allocated stream
containing those elements x that form the maximal prefix of the
input stream for which (pred x) is non–#f. See also
stream-drop-while.
(stream-car
(stream-reverse
(stream-take-while
(lambda (x) (< x 1000))
primes)))
⇒ 997
Return a newly–allocated stream that contains only those elements
x of the input stream for which (pred x) is true.
Example:
(stream-filter odd? (stream-from 0)) ⇒ 1 3 5 7 9 ...
Next: streams range, Previous: streams ops, Up: streams [Index]