Define a better version of make-rat that handles both positive and
negative arguments. make-rat should normalize the sign so that if
the rational number is positive, both the numerator and denominator
are positive, and if the rational number is negative, only the
numerator is negative.
The make-rat and gcd procedures as define in the text:
(define (gcd a b)
(if (= b 0)
a
(gcd b (remainder a b))))
(define (gcd a b)
(if (= b 0)
a
(gcd b (remainder a b))))A make-rat procedure that handles positive and negative integer
inputs”
(define (make-rat n d)
(let ((sign (if (or (and (< n 0) (< d 0))
(and (> n 0) (> d 0)))
+
-))
(g (gcd n d)))
(cons (sign (/ (abs n) g)) (/ (abs d) g))))