Blob


1 (defun make-rat (n d)
2 (labels ((make-rat-reduce (n d)
3 (let ((g (gcd n d)))
4 (cons (/ n g) (/ d g)))))
5 (cond ((and (< n 0) (< d 0))
6 (make-rat-reduce (- n) (- d)))
7 ((and (< d 0) (> n 0))
8 (make-rat-reduce (- n) (- d)))
9 (t (make-rat-reduce n d)))))
10 (defun numer (x)
11 (car x))
12 (defun denom (x)
13 (cdr x))