(library (my-streams) (export stream-ordered-diff stream-merge) (import (rnrs base) (srfi srfi-41)) (define-stream (stream-ordered-diff xstrm ystrm) (stream-match xstrm (() '()) ((x . xs) (stream-match ystrm (() xstrm) ((y . ys) (cond ((< x y) (stream-cons x (stream-ordered-diff xs ystrm))) ((> x y) (stream-ordered-diff xstrm ys)) (else (stream-ordered-diff xs ys)))))))) (define-stream (stream-merge xstrm ystrm) (stream-match xstrm (() ystrm) ((x . xs) (stream-match ystrm (() xstrm) ((y . ys) (cond ((< x y) (stream-cons x (stream-merge xs ystrm))) ((> x y) (stream-cons y (stream-merge xstrm ys))) (else (stream-cons x (stream-merge xs ys))))))))) )