2008. 8. 5.

연습문제 2.82

패스

연습문제 2.81

패스

연습문제 2.82

연습문제 2.80

(define (=zero? v) (apply-generic '=zero? v))

(put '=zero? 'scheme-number
     (lambda (n) (= n 0)))

(define (=zero?rat r1)
  (and (= (denom r1) 0)
       (= (numer r1) 0)))

(put '=zero? 'rational
     (lambda (r) (=zero?rat r)))

(define (=zero?complex c1)
  (and (= (real-part c1) 0)
       (= (imag-part c1) 0)))

(put '=zero? 'complex
     (lambda (c) (=zero?complex c)))

연습문제 2.80

(define (=zero? v) (apply-generic '=zero? v))

(put '=zero? 'scheme-number
     (lambda (n) (= n 0)))

(define (=zero?rat r1)
  (and (= (denom r1) 0)
       (= (numer r1) 0)))

(put '=zero? 'rational
     (lambda (r) (=zero?rat r)))

(define (=zero?complex c1)
  (and (= (real-part c1) 0)
       (= (imag-part c1) 0)))

(put '=zero? 'complex
     (lambda (c) (=zero?complex c)))

연습문제 2.79

(define (equ-complex c1 c2)
  (and (= (real-part c1) (real-part c2))
       (= (imag-part c1) (imag-part c2))))

(put 'equ? '(complex complex)
     (lambda (z1 z2) (equ-complex z1 z2)))

(define (equ-rat r1 r2)
  (and (= (denom r1) (denom r2))
       (= (number r1) (number r2))))

(put 'equ? '(rational rational)
     (lambda (r1 r2) (equ-rat r1 r2)))

(put 'equ? '(scheme-number scheme-number)
     (lambda (n1 n2) (= n1 n2)))

(define (equ? x y) (apply-generic 'equ? x y))

연습문제 2.79

(define (equ-complex c1 c2)
  (and (= (real-part c1) (real-part c2))
       (= (imag-part c1) (imag-part c2))))

(put 'equ? '(complex complex)
     (lambda (z1 z2) (equ-complex z1 z2)))

(define (equ-rat r1 r2)
  (and (= (denom r1) (denom r2))
       (= (number r1) (number r2))))

(put 'equ? '(rational rational)
     (lambda (r1 r2) (equ-rat r1 r2)))

(put 'equ? '(scheme-number scheme-number)
     (lambda (n1 n2) (= n1 n2)))

(define (equ? x y) (apply-generic 'equ? x y))