Code Review
Compare your solutions
#| BEGIN (Write your solution here) |#
; My code
(define (equ? num1 num2)
(let ((tag1 (type-tag num1)) (tag2 (type-tag num2)) (contents1 (contents num1)) (contents2 (contents num2)))
(if (eq? tag1 tag2)
((get 'equ? (list tag1 tag2)) contents1 contents2)
#f
)
)
)
(define (update-scheme-number-package)
(put 'equ? '(scheme-number scheme-number) (lambda (num1 num2) (= num1 num2)))
)
(define (update-rational-package)
(define (numer x) (car x))
(define (denom x) (cdr x))
(put 'equ? '(rational rational)
(lambda (num1 num2)
(and
(= (numer num1) (numer num2))
(= (denom num1) (denom num2))
)
)
)
)
(define (update-complex-package)
(put 'equ? '(complex complex)
(lambda (num1 num2)
(and
(= (real-part num1) (real-part num2))
(= (imag-part num1) (imag-part num2))
)
)
)
)
#| END |#