aboutsummaryrefslogtreecommitdiff
path: root/SICP/tmp.scm
diff options
context:
space:
mode:
Diffstat (limited to 'SICP/tmp.scm')
-rw-r--r--SICP/tmp.scm66
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 ())