Codegen if statements
[scheme.git] / typecheck.scm
index 197798e104a7595f5637646cb102f2d9d99f44d5..46fddfec7008bbf6e05c637368571b6ed2f71563 100644 (file)
@@ -46,7 +46,6 @@
       (car xs)
       (last (cdr xs))))
                                
-                                       
 (define (normalize prog) ; (+ a b) -> ((+ a) b)
   (case (ast-type prog)
     ('lambda 
         `(,(normalize (car prog)) ,(normalize (cadr prog))) ; (f a)
         `(,(list (normalize (car prog)) (normalize (cadr prog)))
           ,(normalize (caddr prog))))) ; (f a b)
-    ;; (list (list (normalize (car prog))
-    ;;             (normalize (cadr prog))) (normalize (caddr prog))))) ; (f a b)
     ('let
        (append (list 'let
                      (map (lambda (x) `(,(car x) ,(normalize (cadr x))))
                           (let-bindings prog)))
                (map normalize (let-body prog))))
-    ('if `(if ,(normalize (cadr prog))
-             ,(normalize (caddr prog))
-             ,(normalize (cadddr prog))))
-    (else prog)))
+    (else (ast-traverse normalize prog))))
 
 (define (builtin-type x)
   (case x