chaperone-hash-set fixes
This commit is contained in:
parent
1b6705f3d9
commit
daf19869de
|
@ -699,11 +699,11 @@ Supported for any @racket[st] that @supp{supports} @racket[set->stream].
|
|||
[ref-proc (-> set? any/c any/c)]
|
||||
[add-proc (-> set? any/c any/c)]
|
||||
[remove-proc (-> set? any/c any/c)]
|
||||
[clear-proc (or/c #f (-> set? any))]
|
||||
[clear-proc (or/c #f (-> set? any)) #f]
|
||||
[prop impersonator-property?]
|
||||
[prop-val any/c] ... ...)
|
||||
(and/c set? impersonator?)]{
|
||||
Impersonates @racket[set], redirecting via the given procedures.
|
||||
Impersonates @racket[st], redirecting via the given procedures.
|
||||
|
||||
The @racket[ref-proc] procedure
|
||||
is called whenever an element is extracted from @racket[st]. Its first argument
|
||||
|
@ -737,11 +737,11 @@ Supported for any @racket[st] that @supp{supports} @racket[set->stream].
|
|||
[ref-proc (-> set? any/c any/c)]
|
||||
[add-proc (-> set? any/c any/c)]
|
||||
[remove-proc (-> set? any/c any/c)]
|
||||
[clear-proc (or/c #f (-> set? any))]
|
||||
[clear-proc (or/c #f (-> set? any)) #f]
|
||||
[prop impersonator-property?]
|
||||
[prop-val any/c] ... ...)
|
||||
(and/c set? chaperone?)]{
|
||||
Chaperones @racket[set]. Like @racket[impersonate-hash-set] but with
|
||||
Chaperones @racket[st]. Like @racket[impersonate-hash-set] but with
|
||||
the constraints that the results of the @racket[ref-proc],
|
||||
@racket[add-proc], and @racket[remove-proc] must be
|
||||
@racket[chaperone-of?] their second arguments. Also, the input
|
||||
|
|
|
@ -631,5 +631,10 @@
|
|||
(λ (s e) (+ e 1))
|
||||
(λ (s l) l)
|
||||
(λ (s l) l))))
|
||||
(test #t even?
|
||||
(set-first (impersonate-hash-set (weak-set 1 3 5)
|
||||
(λ (s e) (+ e 1))
|
||||
(λ (s l) l)
|
||||
(λ (s l) l))))
|
||||
|
||||
(report-errs)
|
||||
|
|
|
@ -403,10 +403,15 @@
|
|||
remove-proc
|
||||
clear-proc+props)
|
||||
(define who (if impersonate? 'impersonate-hash-set 'chaperone-hash-set))
|
||||
(unless (if impersonate? (set-mutable? s) (or (set? s) (set-mutable? s)))
|
||||
(unless (if impersonate?
|
||||
(or (set-mutable? s) (set-weak? s))
|
||||
(or (set? s) (set-mutable? s) (set-weak? s)))
|
||||
(apply raise-argument-error
|
||||
who
|
||||
(if impersonate? "set-mutable?" (format "~s" '(or/c set? set-mutable?)))
|
||||
(format "~s"
|
||||
(if impersonate?
|
||||
'(or/c set-mutable? set-weak?)
|
||||
'(or/c set? set-mutable? set-weak?)))
|
||||
0 s ref-proc add-proc clear-proc+props))
|
||||
(unless (and (procedure? ref-proc)
|
||||
(procedure-arity-includes? ref-proc 2))
|
||||
|
|
Loading…
Reference in New Issue
Block a user