diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-04-23 22:23:23 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-04-23 22:23:23 +0200 |
| commit | f5409662d478093ebb79fdb308538be7bf42f701 (patch) | |
| tree | 9607736b5200610a7e8cdb9d5750abcf00faaa0f /coding-exercises/2/78.rkt | |
| parent | b214b07a67d48ad9205f63641891ff173ff53fca (diff) | |
fixup
Diffstat (limited to 'coding-exercises/2/78.rkt')
| -rw-r--r-- | coding-exercises/2/78.rkt | 70 |
1 files changed, 66 insertions, 4 deletions
diff --git a/coding-exercises/2/78.rkt b/coding-exercises/2/78.rkt index 637ea10..1043e66 100644 --- a/coding-exercises/2/78.rkt +++ b/coding-exercises/2/78.rkt @@ -1,7 +1,8 @@ #lang racket (require "../../shared/data-directed-programming.rkt") -(require "./78/complex-rectangular.rkt") -(require "./78/complex-polar.rkt") +(require "./78/scheme-number.rkt") +(require "./78/install-rational-package.rkt") +(require "./78/install-complex-package.rkt") ;; We are basically making a data directed framework for arithmethic operations in this module (define pkg (make-dispatch-table)) (define put (putter pkg)) @@ -9,5 +10,66 @@ (define print-tbl (printer pkg)) (define apply-generic (make-apply put get)) -(install-rectangular-package put) -(install-polar-package put) +(install-scheme-number-package put) +(install-rational-package put) +(install-complex-package apply-generic get put) + +;; test running +;; num +(define (make-scheme-number n) + ((get 'make 'scheme-number) n)) +(define test-num (make-scheme-number 3)) + +;; rational +(define (make-rat n d) + ((get 'make 'rational) n d)) +(define test-rat (make-rat 1 2)) + +;; complex +(define (make-complex x y) + ((get 'make-from-real-imag 'complex) x y)) +(define test-complex (make-complex 1 2)) + +((lambda () + (println "add sub mul div") + (print (apply-generic 'add test-num test-num)) + (print (apply-generic 'add test-rat test-rat)) + (print (apply-generic 'add test-complex test-complex)) + (newline) + (print (apply-generic 'sub test-num test-num)) + (print (apply-generic 'sub test-rat test-rat)) + (print (apply-generic 'sub test-complex test-complex)) + (newline) + (print (apply-generic 'div test-num test-num)) + (print (apply-generic 'div test-rat test-rat)) + (print (apply-generic 'div test-complex test-complex)) + (newline) + (print (apply-generic 'mul test-num test-num)) + (print (apply-generic 'mul test-rat test-rat)) + (print (apply-generic 'mul test-complex test-complex)))) + +;; 78 +((lambda () + (newline) + ;; Should be represented just as a scheme number + (display test-num))) + +;; 79 +(define (equ? a b) + (apply-generic 'equ? a b)) +((lambda () + (newline) + (display "testing equ?") + (newline) + (println (equ? test-num test-num)) + (println (equ? test-rat test-rat)) + (println (equ? test-complex test-complex)))) + +;; 80 +(define (=zero? n) + (apply-generic '=zero? n)) +((lambda () + (newline) + (println (=zero? test-num)) + (println (=zero? test-rat)) + (println (=zero? test-complex)))) |
