]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ex2_61.clj
Solution to 4.44. A bit too verbose. Can be improved by better
[sicp.git] / src / sicp / ex2_61.clj
1 (ns sicp.ex2_61
2   (:use [sicp.ex2_54 :only (equal? eq?)]
3         [clojure.test]))
4
5 (defn adjoin-set [x set]
6   (let [x1 (first set)]
7     (cond (empty? set) (cons x set)
8           (= x x1) set
9           (< x x1) (cons x set)          
10           (> x x1) (cons x1 (adjoin-set x (rest set))))))
11
12 (deftest test-adjoin
13   (are [x y] [= x y]
14        (adjoin-set 0 '())    '(0)
15        (adjoin-set 1 '(2 3)) '(1 2 3)
16        (adjoin-set 3 '(1 2 3)) '(1 2 3)
17        (adjoin-set 3 '(1 2 4)) '(1 2 3 4)
18        (adjoin-set 4 '(1 2 4)) '(1 2 4)
19        (adjoin-set 4 '(1 2 3)) '(1 2 3 4)))