X-Git-Url: https://git.lukelau.me/?p=scheme.git;a=blobdiff_plain;f=typecheck.scm;h=d180e44e92e755f1e4fbb4172f3535e70f8ebb24;hp=35e818866df9603a3ecaa4cc721b548035d26abc;hb=8e106ca13666680051f91ab3f49ce2bd7e19ead7;hpb=86531822ef58c5b29751976f5b41d1c631bdd459 diff --git a/typecheck.scm b/typecheck.scm index 35e8188..d180e44 100644 --- a/typecheck.scm +++ b/typecheck.scm @@ -259,7 +259,8 @@ ; 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 (expand-pattern-matches prog)]) + (cadr (check (init-adts-env expanded) (normalize (program-body expanded)))))) ; before passing annotated types onto codegen @@ -309,8 +310,11 @@ (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))))))