diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-05-09 22:17:11 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-05-09 22:17:11 +0200 |
| commit | 591bda19951558d40d6ad11b49941c9ce8cd5704 (patch) | |
| tree | 13545fcd0c23fc729126eac4fab6dd0418638e16 /coding-exercises/2/83/install-integer.rkt | |
| parent | d6752a78aa1dd2483a943acd2c3d8bb5fa6e8d2d (diff) | |
fixup
Diffstat (limited to 'coding-exercises/2/83/install-integer.rkt')
| -rw-r--r-- | coding-exercises/2/83/install-integer.rkt | 25 |
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) |
