3 [clojure.contrib test-is]))
7 (declare make-rat numer denom)
10 (make-rat (+ (* (numer x) (denom y))
11 (* (numer y) (denom x)))
12 (* (denom x) (denom y))))
15 (make-rat (- (* (numer x) (denom y))
16 (* (numer y) (denom x)))
17 (* (denom x) (denom y))))
20 (make-rat (* (numer x) (numer y))
21 (* (denom x) (denom y))))
24 (make-rat (* (numer x) (denom y))
25 (* (numer y) (denom x))))
27 (defn equal-rat? [x y]
28 (= (* (numer x) (denom y))
29 (* (denom x) (numer y))))
31 ;; until now, we haven't even defined the data representation.
32 ;; now define make-rat numer and denom.
45 (println (numer x)"/"(denom x)))
48 ;; scheme/CL cons is nothing but a way to represent a pair.
50 (fn [m] (cond (= m 0) x
52 :else (str "argument not 0 or 1 - s-cons"))))