; we typecheck the lambda calculus only (only single arg lambdas)
(define (typecheck prog)
- (cadr (check (init-adts-env prog) (normalize (program-body prog)))))
+ (let ([expanded (program-map-exprs expand-pattern-matches prog)])
+ (cadr (check (init-adts-env expanded) (normalize (program-body expanded))))))
; before passing annotated types onto codegen
(define ann-expr car)
(define ann-type caddr)
+
+ ; prerequisites: expand-pattern-matches
(define (annotate-types prog)
- (denormalize (program-body prog)
+ (denormalize
+ (program-body prog)
(caddr (check (init-adts-env prog)(normalize (program-body prog))))))