From bfdb81a05b010e51a7410f3503bfa9f43ccc2f7c Mon Sep 17 00:00:00 2001 From: Mike Vink Date: Tue, 2 May 2023 21:33:01 +0200 Subject: finally finished the arithmetic package stuff --- coding-exercises/2/78/complex-polar.rkt | 6 +++--- coding-exercises/2/78/complex-rectangular.rkt | 8 ++++---- coding-exercises/2/78/install-complex-package.rkt | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) (limited to 'coding-exercises/2/78') diff --git a/coding-exercises/2/78/complex-polar.rkt b/coding-exercises/2/78/complex-polar.rkt index 3c8cfe8..725f387 100644 --- a/coding-exercises/2/78/complex-polar.rkt +++ b/coding-exercises/2/78/complex-polar.rkt @@ -2,7 +2,7 @@ (provide install-polar-package) (require "../../../shared/data-directed-programming.rkt") -(define (install-polar-package put) +(define (install-polar-package apply-generic put) (define (magnitude z) (car z)) (define (angle z) @@ -10,9 +10,9 @@ (define (make-from-mag-ang r a) (cons r a)) (define (real-part z) - (* (magnitude z) (cos (angle z)))) + (apply-generic 'mul (magnitude z) (apply-generic 'cos (angle z)))) (define (imag-part z) - (* (magnitude z) (sin (angle z)))) + (apply-generic 'mul (magnitude z) (apply-generic 'sin (angle z)))) (define (make-from-real-imag x y) (cons (sqrt (+ (sqr x) (sqr y))) (atan y x))) diff --git a/coding-exercises/2/78/complex-rectangular.rkt b/coding-exercises/2/78/complex-rectangular.rkt index bbc2b8c..be4f0e5 100644 --- a/coding-exercises/2/78/complex-rectangular.rkt +++ b/coding-exercises/2/78/complex-rectangular.rkt @@ -3,14 +3,14 @@ (require "../../../shared/data-directed-programming.rkt") -(define (install-rectangular-package put) +(define (install-rectangular-package apply-generic put) (define (real-part z) (car z)) (define (imag-part z) (cdr z)) (define (make-from-real-imag x y) (cons x y)) - (define (magnitude z) (sqrt (+ (sqr (real-part z)) - (sqr (real-part z))))) + (define (magnitude z) (apply-generic 'sqrt (+ (apply-generic 'sqr (real-part z)) + (apply-generic 'sqr (real-part z))))) (define (angle z) - (atan (imag-part z) + (apply-generic 'atan (imag-part z) (real-part z))) (define (make-from-mag-ang r a) (cons (* r (cos a)) diff --git a/coding-exercises/2/78/install-complex-package.rkt b/coding-exercises/2/78/install-complex-package.rkt index fa39328..a99b7d5 100644 --- a/coding-exercises/2/78/install-complex-package.rkt +++ b/coding-exercises/2/78/install-complex-package.rkt @@ -7,8 +7,8 @@ (define (install-complex-package apply-generic get put) ;; install and import methods - (install-rectangular-package put) - (install-polar-package put) + (install-rectangular-package apply-generic put) + (install-polar-package apply-generic put) (define (make-from-real-imag x y) ((get 'make-from-real-imag 'rectangular) x y)) (define (make-from-mag-ang r a) -- cgit v1.2.3