]> git.rkrishnan.org Git - sicp.git/blobdiff - src/sicp/ch2_4.rkt
solution to 4.43
[sicp.git] / src / sicp / ch2_4.rkt
index ed348fd38f0256b14b9f67842f18cd228441bd63..7aedacd44894e4186297992408e4223e8c592260 100644 (file)
@@ -1,4 +1,4 @@
-#lang racket
+#lang racket/load
 
 (require "utils.rkt")
 
 (define (make-from-mag-ang r a)
   (make-from-mag-ang-polar r a))
 
-;;; data directed programming
+;;; message passing
+(define (make-from-real-imag x y)
+  (define (dispatch op)
+    (cond
+      [(eq? op 'real-part) x]
+      [(eq? op 'imag-part) y]
+      [(eq? op 'magnitude)
+       (sqrt (+ (square x) (square y)))]
+      [(eq? op 'angle) (atan y x)]
+      [else 
+       (error "unknown op" op)]))
+  dispatch)
+