Blame


1 665c255d 2023-08-04 jrmu (define (make-from-real-imag x y)
2 665c255d 2023-08-04 jrmu (define (dispatch op)
3 665c255d 2023-08-04 jrmu (cond ((eq? op 'real-part) x)
4 665c255d 2023-08-04 jrmu ((eq? op 'imag-part) y)
5 665c255d 2023-08-04 jrmu ((eq? op 'magnitude)
6 665c255d 2023-08-04 jrmu (sqrt (+ (square x) (square y))))
7 665c255d 2023-08-04 jrmu ((eq? op 'angle) (atan y x))
8 665c255d 2023-08-04 jrmu (else (error "Unknown op -- MAKE-FROM-REAL-IMAG" op))))
9 665c255d 2023-08-04 jrmu dispatch)
10 665c255d 2023-08-04 jrmu
11 665c255d 2023-08-04 jrmu (define (apply-generic op arg) (arg op))
12 665c255d 2023-08-04 jrmu
13 665c255d 2023-08-04 jrmu ;; Exercise 2.75. Implement the constructor make-from-mag-ang in message-passing style. This procedure should be analogous to the make-from-real-imag procedure given above.
14 665c255d 2023-08-04 jrmu
15 665c255d 2023-08-04 jrmu (define (make-from-mag-ang r a)
16 665c255d 2023-08-04 jrmu (define (dispatch op)
17 665c255d 2023-08-04 jrmu (cond ((eq? op 'real-part) (* r (cos a)))
18 665c255d 2023-08-04 jrmu ((eq? op 'imag-part) (* r (sin a)))
19 665c255d 2023-08-04 jrmu ((eq? op 'magnitude) r)
20 665c255d 2023-08-04 jrmu ((eq? op 'angle) a)
21 665c255d 2023-08-04 jrmu (else (error "Unknown op -- MAKE-FROM-REAL-IMAG" op))))
22 665c255d 2023-08-04 jrmu dispatch)
23 665c255d 2023-08-04 jrmu
24 665c255d 2023-08-04 jrmu