summaryrefslogtreecommitdiff
path: root/coding-exercises/2/83/install-integer.rkt
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-05-09 22:17:11 +0200
committerMike Vink <mike1994vink@gmail.com>2023-05-09 22:17:11 +0200
commit591bda19951558d40d6ad11b49941c9ce8cd5704 (patch)
tree13545fcd0c23fc729126eac4fab6dd0418638e16 /coding-exercises/2/83/install-integer.rkt
parentd6752a78aa1dd2483a943acd2c3d8bb5fa6e8d2d (diff)
fixup
Diffstat (limited to 'coding-exercises/2/83/install-integer.rkt')
-rw-r--r--coding-exercises/2/83/install-integer.rkt25
1 files changed, 19 insertions, 6 deletions
diff --git a/coding-exercises/2/83/install-integer.rkt b/coding-exercises/2/83/install-integer.rkt
index ca1ebb5..ca33ba0 100644
--- a/coding-exercises/2/83/install-integer.rkt
+++ b/coding-exercises/2/83/install-integer.rkt
@@ -13,13 +13,26 @@
((get 'make 'rational) i 1)
(error "cannot raise non integer in integer package")))
;; constructor
- (put 'make 'integer (lambda (x) (tagme (make x))))
+ (put 'make 'integer (lambda (x)
+ (newline)
+ (display (list "MAKE INTEGER --" x (make x)))
+ (tagme (make x))))
+
+ (define (gcd-integer a b)
+ (newline)
+ (display (list "GCD-INTEGER -- " a b))
+ (if (= b 0)
+ a
+ (gcd-integer b (remainder a b))))
+
;; methods
- (put 'add '(integer integer) (lambda (x y) (tagme (make (+ x y)))))
- (put 'neg '(integer) (lambda (x) (tagme (- x))))
- (put 'sub '(integer integer) (lambda (x y) (tagme (make (- x y)))))
- (put 'mul '(integer integer) (lambda (x y) (tagme (make (* x y)))))
- (put 'div '(integer integer) (lambda (x y) (tagme (make (/ x y)))))
+ (put 'add '(integer integer) (lambda (x y) (+ x y)))
+ (put 'neg '(integer) (lambda (x) (- x)))
+ (put 'sub '(integer integer) (lambda (x y) (- x y)))
+ (put 'mul '(integer integer) (lambda (x y) (* x y)))
+ (put 'div '(integer integer) (lambda (x y) (/ x y)))
+ (put 'greatest-common-divisor '(integer integer) (lambda (a b)
+ (gcd-integer a b)))
(put 'raise '(integer) raiseme)
;; sqrt and trig methods for complex nums
(put 'sqr '(integer) sqr)