diff options
Diffstat (limited to 'SICP/tmp.scm')
| -rw-r--r-- | SICP/tmp.scm | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/SICP/tmp.scm b/SICP/tmp.scm new file mode 100644 index 0000000..aed388f --- /dev/null +++ b/SICP/tmp.scm @@ -0,0 +1,66 @@ +(define (gcd a b) + (if (= b 0) + a + (gcd b (remainder a b)))) +;(define (make-rat n d) (cons n d)) +(define (make-rat n d) + (let ((g (gcd n d))) + (cons (/ n g) + (/ d g)))) + +(define (numer x) (car x)) +(define (denom x) (cdr x)) + +(define (add-rat x y) + ( + make-rat (+ (* (numer x) (denom y)) + (* (numer y) (denom x))) + (* (denom x) (denom y)))) + +(define (sub-rat x y) + (make-rat (- (* (numer x) (denom y)) + (* (numer y) (denom x))) + (* (denom x) (denom y)))) + +(define (mul-rat x y) + (make-rat (* (numer x) (numer y)) + (* (denom x) (denom y)))) + +(define (div-rat x y) + (make-rat (* (numer x) (denom y)) + (* (denom x) (numer y)))) + +(define (equal-rat? x y) + (= (* (numer x) (denom y)) + (* (numer y) (denom x)))) + +(define (print-rat x) + (newline) + (display (numer x)) + (display "/") + (display (denom x))) + +(define one-half (make-rat 1 2)) +(print-rat one-half) + +(define one-third (make-rat 1 3)) +(print-rat one-third) + +(print-rat + (mul-rat one-half one-third)) + +(print-rat + (add-rat one-third one-third)) + +(print-rat + (make-rat -1 1)) + +(define (print-point p) + (newline) + (display "(") + (display (x-point p)) + (display ",") + (display (y-point p)) + (display ")")) + +(define ()) |
