X-Git-Url: http://git.lukelau.me/?p=scheme.git;a=blobdiff_plain;f=typecheck.scm;h=46fddfec7008bbf6e05c637368571b6ed2f71563;hp=197798e104a7595f5637646cb102f2d9d99f44d5;hb=25a4c23da2d76f3bb951d01b1c3175be80441a0a;hpb=21a9f0aaa56d6dd767cefb30c606f4c62eecff48 diff --git a/typecheck.scm b/typecheck.scm index 197798e..46fddfe 100644 --- a/typecheck.scm +++ b/typecheck.scm @@ -46,7 +46,6 @@ (car xs) (last (cdr xs)))) - (define (normalize prog) ; (+ a b) -> ((+ a) b) (case (ast-type prog) ('lambda @@ -60,17 +59,12 @@ `(,(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