projects
/
scheme.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix total pattern match verification
[scheme.git]
/
typecheck.scm
diff --git
a/typecheck.scm
b/typecheck.scm
index f6d7c86465f4869043b3d2fcb9560e42603258d7..b2b001f1d27220211e5f67e651d641c9895f5b5c 100644
(file)
--- a/
typecheck.scm
+++ b/
typecheck.scm
@@
-1,4
+1,5
@@
(load "ast.scm")
(load "ast.scm")
+(load "stdlib.scm")
(define (abs? t)
(and (list? t) (eq? (car t) 'abs)))
(define (abs? t)
(and (list? t) (eq? (car t) 'abs)))
@@
-258,7
+259,6
@@
((res
(case (ast-type x)
('int-literal (make-result '() 'Int))
((res
(case (ast-type x)
('int-literal (make-result '() 'Int))
- ('bool-literal (make-result '() 'Bool))
('string-literal (make-result '() 'String))
('builtin (make-result '() (builtin-type x)))
('string-literal (make-result '() 'String))
('builtin (make-result '() (builtin-type x)))
@@
-318,8
+318,9
@@
(flat-map data-tors-type-env (program-data-layouts prog)))
; we typecheck the lambda calculus only (only single arg lambdas)
(flat-map data-tors-type-env (program-data-layouts prog)))
; we typecheck the lambda calculus only (only single arg lambdas)
-(define (typecheck prog)
- (let ([expanded (expand-pattern-matches prog)])
+(define (typecheck prog-without-stdlib)
+ (let* ([prog (append stdlib prog-without-stdlib)]
+ [expanded (expand-pattern-matches prog)])
(cadr (check (program-data-layouts prog)
(init-adts-env expanded)
(normalize (program-body expanded))))))
(cadr (check (program-data-layouts prog)
(init-adts-env expanded)
(normalize (program-body expanded))))))