SICP 2.1 答案

(define (gcd x y) ;; we've implemented gcd in section 1.2.5.
  (if (= y 0)
      x
      (gcd y (remainder x y))))

(define (signum x)
  (if (= 0 x)
      0
      (/ x (abs x))))

(define (make-rat n d)
  (let ((g (gcd (abs n) (abs d)))
        (s (signum d)))
    (cons (/ n (* g s)) 
          (/ d (* g s)))))

你可能感兴趣的:(Scheme)