;;; Adds all of the streams element-wise.  
;;; Assumes each stream contains only
;;; numbers.  Returns the empty list if
;;; any of the streams has terminated.
(define (stream-add . streams)
  (if (fold-right 
       (lambda (x acc) (or acc (null? x))) 
       #f 
       streams)
      '()
      (cons-stream 
       (apply + (map stream-car streams))
       (apply stream-add 
              (map stream-cdr streams)))))