rats.scm 1008 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. (define (make-rat n d) (cons n d))
  2. (define (numer x) (car x))
  3. (define (denom x) (cdr x))
  4. (define (print-rat x)
  5. (display (numer x))
  6. (display "/")
  7. (display (denom x))
  8. (newline))
  9. (define (add-rat x y)
  10. (make-rat (+ (* (numer x) (denom y))
  11. (* (numer y) (denom x)))
  12. (* (denom x) (denom y))))
  13. (define (sub-rat x y)
  14. (make-rat (- (* (numer x) (denom y))
  15. (* (numer y) (denom x)))
  16. (* (denom x) (denom y))))
  17. (define (mul-rat x y)
  18. (make-rat (* (numer x) (numer y))
  19. (* (denom x) (denom y))))
  20. (define (div-rat x y)
  21. (make-rat (* (numer x) (denom y))
  22. (* (denom x) (numer y))))
  23. (define (equal-rat? x y)
  24. (= (* (numer x) (denom y))
  25. (* (numer y) (denom x))))
  26. (define one-half (make-rat 1 2))
  27. (define one-third (make-rat 1 3))
  28. (define t1 (print-rat one-half))
  29. (define t2 (print-rat (add-rat one-half one-third)))
  30. (define t3 (print-rat (mul-rat one-half one-third)))
  31. (define t4 (print-rat (add-rat one-third one-third)))