|
|
|
|
@ -15,13 +15,13 @@
|
|
|
|
|
[(unsubscribe subscriber) |
|
|
|
|
(bcom (^pubsub bcom (set-remove subscribers subscriber)))] |
|
|
|
|
[(subscribers) subscribers] |
|
|
|
|
[pub |
|
|
|
|
[publish |
|
|
|
|
(make-keyword-procedure |
|
|
|
|
(lambda (kws kw-vals . args) |
|
|
|
|
(for ([subscriber subscribers]) |
|
|
|
|
(keyword-apply <-np kws kw-vals subscriber args))))] |
|
|
|
|
|
|
|
|
|
[pub-except |
|
|
|
|
[publish-except |
|
|
|
|
(make-keyword-procedure |
|
|
|
|
(lambda (kws kw-vals excluding . args) |
|
|
|
|
(define subscriber-subset |
|
|
|
|
@ -50,11 +50,11 @@
|
|
|
|
|
($ pubsub 'unsubscribe subscriber)] |
|
|
|
|
[(add val) |
|
|
|
|
($ base-seteq 'add val) |
|
|
|
|
($ pubsub 'pub 'add val) |
|
|
|
|
($ pubsub 'publish 'add val) |
|
|
|
|
(void)] |
|
|
|
|
[(remove val) |
|
|
|
|
($ base-seteq 'remove val) |
|
|
|
|
($ pubsub 'pub 'remove val)] |
|
|
|
|
($ pubsub 'publish 'remove val)] |
|
|
|
|
#:extends base-seteq)) |
|
|
|
|
|
|
|
|
|
(define ps-set |
|
|
|
|
|