more contracts
more fixes svn: r14632
This commit is contained in:
parent
9853ae1f0f
commit
af7b966c82
|
@ -20,7 +20,7 @@
|
||||||
with-dotted-env/extend)
|
with-dotted-env/extend)
|
||||||
|
|
||||||
;; eq? has the type of equal?, and l is an alist (with conses!)
|
;; eq? has the type of equal?, and l is an alist (with conses!)
|
||||||
(define-struct env (eq? l))
|
(r:d-s/c env ([eq? (any/c any/c . -> . boolean?)] [l (listof pair?)]))
|
||||||
|
|
||||||
(define (env-vals e)
|
(define (env-vals e)
|
||||||
(map cdr (env-l e)))
|
(map cdr (env-l e)))
|
||||||
|
@ -45,7 +45,8 @@
|
||||||
;; the environment for types of ... variables
|
;; the environment for types of ... variables
|
||||||
(define dotted-env (make-parameter (make-empty-env free-identifier=?)))
|
(define dotted-env (make-parameter (make-empty-env free-identifier=?)))
|
||||||
|
|
||||||
(define (env-map f env)
|
(define/contract (env-map f env)
|
||||||
|
((pair? . -> . pair?) env? . -> . env?)
|
||||||
(make-env (env-eq? env) (map f (env-l env))))
|
(make-env (env-eq? env) (map f (env-l env))))
|
||||||
|
|
||||||
;; extend that works on single arguments
|
;; extend that works on single arguments
|
||||||
|
|
|
@ -50,6 +50,6 @@
|
||||||
(env? (listof Filter/c) . -> . env?)
|
(env? (listof Filter/c) . -> . env?)
|
||||||
(for/fold ([Γ env]) ([f fs])
|
(for/fold ([Γ env]) ([f fs])
|
||||||
(match f
|
(match f
|
||||||
[(Bot:) (env-map (lambda (_) (Un)) Γ)]
|
[(Bot:) (env-map (lambda (x) (cons (car x) (Un))) Γ)]
|
||||||
[(or (TypeFilter: _ _ x) (NotTypeFilter: _ _ x))
|
[(or (TypeFilter: _ _ x) (NotTypeFilter: _ _ x))
|
||||||
(update-type/lexical (lambda (x t) (update t f)) x Γ)])))
|
(update-type/lexical (lambda (x t) (update t f)) x Γ)])))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user