先上代码
(def number first)
(def denom last)
(defn print-rat [x](println) (print (number x)) (print "/") (println (denom x)))
;(defn make-rat [n d](let [g (gcd n d)] (list (/ n g) (/ d g) ) ))
;旧版
(defn abs [x] (if (< x 0) (- 0 x) x))
(defn % [a b] (if (< (abs a) (abs b)) a (% (- a b ) b )))
(defn gcd [a b]
(if (= b 0)
a
(gcd b (% a b)
)
)
)
(defn make-rat [n d]
(let [g (gcd (abs n) (abs d))]
(list (if
(> (* n d) 0)
(abs (/ n g))
(- 0 (abs (/ n g)))
)
(abs (/ d g) )
)
)
)
对以上代