;;; 75-make-from-mag-ang.scm
(define (make-from-mag-ang x y)
(define (dispatch op)
(cond ((eq? op 'real-part)
(* x (cos y)))
((eq? op 'imag-part)
(* x (sin y)))
((eq? op 'magnitude)
x)
((eq? op 'angle)
y)
(else
(error "Unkonw op -- MAKE-FROM-MAG-ANG" op))))
dispatch)
测试:
1 ]=> (load "75-make-from-mag-ang.scm")
;Loading "75-make-from-mag-ang.scm"... done
;Value: make-from-mag-ang
1 ]=> (define c (make-from-mag-ang 3 4))
;Value: c
1 ]=> (c 'real-part)
;Value: -1.960930862590836
1 ]=> (c 'imag-part)
;Value: -2.2704074859237844
1 ]=> (c 'magnitude)
;Value: 3
1 ]=> (c 'angle)
;Value: 4