;; (numer <pair>)
;; return the numerator of a rational number.
;; (denom <pair>)
;; return the denominator of a rational number.
;; (make-rat <n> <d>)
;; returns the rational number whose numerator is the integer <n>
;; and whose denominator is the integer <d>.
;;
;; NOTE: both <n> and <d> are reduced to their lowest terms before
;; construction of the rational number.
(
;; (print-rat <pair>)
;; prints a rational number with a slash.
(defun add
-rat
(pairx pairy
) ;; (add-rat <pairx> <pairy>)
;; preforms addition on two rational number pairs.
(make-rat (+ (* (numer pairx) (denom pairy))
(* (numer pairy) (denom pairx)))
(* (denom pairx) (denom pairy))) )
(defun sub
-rat
(pairx pairy
) ;; (sub-rat <pairx> <pairy>)
;; preform subtraction on two rational number pairs.
(make-rat (- (* (numer pairx) (denom pairy))
(* (numer pairy) (denom pairx)))
(* (denom pairx) (denom pairy))))
(defun mul
-rat
(pairx pairy
) ;; (mul-rat <pairx> <pairy>)
;; preform multiplication on two rational number pairs.
(make-rat (* (numer pairx) (numer pairy))
(* (denom pairx) (denom pairy))) )
(defun div
-rat
(pairx pairy
) ;; (div-rat <pairx> pairy>)
;; preform division on two rational number pairs.
(make-rat (* (numer pairx) (denom pairy))
(* (denom pairx) (numer pairy))) )
(defun equal
-rat?
(pairx pairy
) ;; (eual-rat? <pairx> <pairy>)
;; determine if two rational number pairs are equal.
(= (* (numer pairx) (denom pairy))
(* (numer pairy) (denom pairx))) )