Skip to content

Instantly share code, notes, and snippets.

@angerman
Created December 3, 2009 11:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save angerman/248085 to your computer and use it in GitHub Desktop.
Save angerman/248085 to your computer and use it in GitHub Desktop.
(defn lazy-combine-sorted [xs ys]
"lazily combines xs and ys and returns their union (assumes xs ys sorted)"
(lazy-seq
(if-let [[x & xs*] xs]
(if-let [[y & ys*] ys]
(cond (= x y) (cons x (lazy-combine-sorted xs* ys*))
(< x y) (cons x (lazy-combine-sorted xs* ys))
(> x y) (cons y (lazy-combine-sorted xs ys*)))
xs) ; no more ys
ys))) ; no more xs
(defn combine [xs ys]
"combines xs and ys and returns their union"
(lazy-combine-sorted (sort xs ys)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment