fixed contract on dict-set*, dict-set*!

This commit is contained in:
Ryan Culpepper 2010-09-13 14:20:55 -06:00
parent a9efe95fc5
commit 01d565dfd7

View File

@ -121,6 +121,10 @@
(or/c #f (-> dict? contract?)) (or/c #f (-> dict? contract?))
(or/c #f (-> dict? contract?)))) (or/c #f (-> dict? contract?))))
(define even-length-list/c
(flat-named-contract 'even-length-list/c
(lambda (l) (even? (length l)))))
;; ---------------------------------------- ;; ----------------------------------------
(provide/contract (provide/contract
@ -152,8 +156,6 @@
[dict-set [dict-set
dict-set-contract] dict-set-contract]
[dict-set*! [dict-set*!
any/c
#|
(->i ([d (and/c dict? dict-mutable?)]) (->i ([d (and/c dict? dict-mutable?)])
#:rest [_ (d) (let ([key/c (dict-key-contract d)] #:rest [_ (d) (let ([key/c (dict-key-contract d)]
[val/c (dict-value-contract d)]) [val/c (dict-value-contract d)])
@ -161,12 +163,10 @@
(recursive-contract (recursive-contract
(or/c null (or/c null
(cons/c key/c (cons/c val/c args/c))))]) (cons/c key/c (cons/c val/c args/c))))])
args/c))] (and/c even-length-list/c
[_ void?]) args/c)))]
|#] [_ void?])]
[dict-set* [dict-set*
any/c
#|
(->i ([d (and/c dict? dict-can-functional-set?)]) (->i ([d (and/c dict? dict-can-functional-set?)])
#:rest [_ (d) (let ([key/c (dict-key-contract d)] #:rest [_ (d) (let ([key/c (dict-key-contract d)]
[val/c (dict-value-contract d)]) [val/c (dict-value-contract d)])
@ -174,9 +174,9 @@
(recursive-contract (recursive-contract
(or/c null (or/c null
(cons/c key/c (cons/c val/c args/c))))]) (cons/c key/c (cons/c val/c args/c))))])
args/c))] (and/c even-length-list/c
[_ dict?]) args/c)))]
|#] [_ dict?])]
[dict-update! [dict-update!
(->i ([d (and/c dict? dict-mutable?)] (->i ([d (and/c dict? dict-mutable?)]
[k (d) (dict-key-contract d)] [k (d) (dict-key-contract d)]