;; ex 2.1 (define (numer x) (car x)) (define (denom x) (cdr x)) (define (print-rat x) (newline) (display (numer x)) (display "/") (display (denom x))) (define (make-rat n d) (let ((g ((if (< d 0) - +) (gcd n d)))) (cons (/ n g) (/ d g)))) ;; Testing (print-rat (make-rat 6 9)) ; 2/3 (print-rat (make-rat -6 9)) ; -2/3 (print-rat (make-rat 6 -9)) ; -2/3 (print-rat (make-rat -6 -9)) ; 2/3
This forces denominator to be positive by making g (which is (gcd n d)) same sign as d
<< Previous exercise (1.46) | Index | Next exercise (2.2) >>
category-learning-scheme category-texts