;;; 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)))))