We have seen a number of useful stream funtions, as counterparts to well-known list functions.
First, consider if/how to program a stream-append function, as a counterpart to append. Here is a possible recursive append function for lists:
(define (my-append lst1 lst2) (cond ((null? lst1) lst2) (else (cons (car lst1) (my-append (cdr lst1) lst2)))))
How will your stream-append function work on infinite streams, such as nat-nums or fibs?
Now program a similar function, stream-merge, that merges two streams by simple alternation.
How will stream-merge function work on initinite streams? And on finite streams?
Can you use stream-merge to produce as stream of all integers (in some arbitrary order), based on two other streams with fixed starting points?