port sequence/c to late-neg projections
This commit is contained in:
parent
3ed7dfd62b
commit
94ac77d30e
|
@ -182,7 +182,7 @@
|
||||||
(coerce-contract 'sequence/c elem/c)))
|
(coerce-contract 'sequence/c elem/c)))
|
||||||
(define elem/mk-projs
|
(define elem/mk-projs
|
||||||
(for/list ([ctc (in-list ctcs)])
|
(for/list ([ctc (in-list ctcs)])
|
||||||
(contract-projection ctc)))
|
(contract-late-neg-projection ctc)))
|
||||||
(define n-cs (length elem/cs))
|
(define n-cs (length elem/cs))
|
||||||
(make-contract
|
(make-contract
|
||||||
#:name (apply build-compound-type-name 'sequence/c
|
#:name (apply build-compound-type-name 'sequence/c
|
||||||
|
@ -197,15 +197,15 @@
|
||||||
(if (vector? val) (= n-cs 1) #t)
|
(if (vector? val) (= n-cs 1) #t)
|
||||||
(if (list? val) (= n-cs 1) #t)
|
(if (list? val) (= n-cs 1) #t)
|
||||||
(if (hash? val) (= n-cs 2) #t)))
|
(if (hash? val) (= n-cs 2) #t)))
|
||||||
#:projection
|
#:late-neg-projection
|
||||||
(λ (orig-blame)
|
(λ (orig-blame)
|
||||||
(define blame (blame-add-context orig-blame "an element of"))
|
(define blame (blame-add-context orig-blame "an element of"))
|
||||||
(define ps (for/list ([mk-proj (in-list elem/mk-projs)])
|
(define ps (for/list ([mk-proj (in-list elem/mk-projs)])
|
||||||
(mk-proj blame)))
|
(mk-proj blame)))
|
||||||
(λ (seq)
|
(λ (seq neg-party)
|
||||||
(unless (sequence? seq)
|
(unless (sequence? seq)
|
||||||
(raise-blame-error
|
(raise-blame-error
|
||||||
orig-blame seq
|
orig-blame #:missing-party neg-party seq
|
||||||
'(expected: "a sequence" given: "~e")
|
'(expected: "a sequence" given: "~e")
|
||||||
seq))
|
seq))
|
||||||
(define result-seq
|
(define result-seq
|
||||||
|
@ -220,14 +220,14 @@
|
||||||
(define n-elems (length elems))
|
(define n-elems (length elems))
|
||||||
(unless (= n-elems n-cs)
|
(unless (= n-elems n-cs)
|
||||||
(raise-blame-error
|
(raise-blame-error
|
||||||
blame seq
|
blame #:missing-party neg-party seq
|
||||||
'(expected: "a sequence of ~a values" given: "~a values\n values: ~e")
|
'(expected: "a sequence of ~a values" given: "~a values\n values: ~e")
|
||||||
n-cs n-elems elems))
|
n-cs n-elems elems))
|
||||||
(apply
|
(apply
|
||||||
values
|
values
|
||||||
(for/list ([elem (in-list elems)]
|
(for/list ([elem (in-list elems)]
|
||||||
[p (in-list ps)])
|
[p (in-list ps)])
|
||||||
(p elem))))))
|
(p elem neg-party))))))
|
||||||
add1
|
add1
|
||||||
0
|
0
|
||||||
(lambda (idx)
|
(lambda (idx)
|
||||||
|
@ -235,7 +235,7 @@
|
||||||
(when (and min-count (idx . < . min-count))
|
(when (and min-count (idx . < . min-count))
|
||||||
(unless ans
|
(unless ans
|
||||||
(raise-blame-error
|
(raise-blame-error
|
||||||
orig-blame
|
orig-blame #:missing-party neg-party
|
||||||
seq
|
seq
|
||||||
'(expected: "a sequence that contains at least ~a values" given: "~e")
|
'(expected: "a sequence that contains at least ~a values" given: "~e")
|
||||||
min-count
|
min-count
|
||||||
|
|
Loading…
Reference in New Issue
Block a user