Passes all tests
This commit is contained in:
parent
e5b13e035a
commit
5f36bf97e6
@ -390,10 +390,15 @@
|
||||
(let* ([arg-type (parse-type te)]
|
||||
[res-type (typecheck body (BindType name arg-type env))])
|
||||
(arrowT arg-type res-type))]
|
||||
[(listE elements) (begin
|
||||
(define type-list (map (lambda (x) (typecheck x env)) elements))
|
||||
|
||||
(listT )]
|
||||
[(listE elements) (local [(define type-list (map (lambda (x) (typecheck x env)) elements))
|
||||
(define filtered (filter (lambda (x) (equal? (first type-list) x)) type-list))]
|
||||
(if (equal? filtered type-list)
|
||||
(listT (first type-list))
|
||||
(type-case Type (first type-list)
|
||||
[(varT v t) (if (none? (unbox t))
|
||||
(listT (second type-list))
|
||||
(error 'typecheck "no type"))]
|
||||
[else (error 'typecheck "no type")])))]
|
||||
))
|
||||
;; ----------------------------------------
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user