Add datum-tset-empty to avoid some calls to canonicalize

This commit is contained in:
Tony Garnock-Jones 2016-03-13 10:37:51 +00:00
parent 6d40b1c541
commit 623140dc36
3 changed files with 7 additions and 4 deletions

View File

@ -95,7 +95,7 @@
(define (compute-affected-pids routing-table cover) (define (compute-affected-pids routing-table cover)
(trie-match-trie cover (trie-match-trie cover
(trie-step routing-table struct:observe) (trie-step routing-table struct:observe)
#:seed (datum-tset) #:seed datum-tset-empty
#:combiner (lambda (v1 v2 acc) (tset-union v2 acc)) #:combiner (lambda (v1 v2 acc) (tset-union v2 acc))
#:left-short (lambda (v r acc) #:left-short (lambda (v r acc)
(tset-union acc (success-value (trie-step r EOS)))))) (tset-union acc (success-value (trie-step r EOS))))))
@ -103,7 +103,7 @@
(define (mux-route-message m body) (define (mux-route-message m body)
(if (trie-lookup (mux-routing-table m) body #f) ;; some other stream has declared body (if (trie-lookup (mux-routing-table m) body #f) ;; some other stream has declared body
'() '()
(tset->list (trie-lookup (mux-routing-table m) (observe body) (datum-tset))))) (tset->list (trie-lookup (mux-routing-table m) (observe body) datum-tset-empty))))
(define (mux-interests-of m label) (define (mux-interests-of m label)
(hash-ref (mux-interest-table m) label (trie-empty))) (hash-ref (mux-interest-table m) label (trie-empty)))

View File

@ -112,7 +112,7 @@
(define cover (trie-union (patch-added delta) (patch-removed delta))) (define cover (trie-union (patch-added delta) (patch-removed delta)))
(trie-match-trie cover (trie-match-trie cover
(trie-step routing-table struct:observe) (trie-step routing-table struct:observe)
#:seed (datum-tset) #:seed datum-tset-empty
#:combiner (lambda (v1 v2 acc) (tset-union v2 acc)) #:combiner (lambda (v1 v2 acc) (tset-union v2 acc))
#:left-short (lambda (v r acc) #:left-short (lambda (v r acc)
(tset-union acc (success-value (trie-step r EOS)))))) (tset-union acc (success-value (trie-step r EOS))))))
@ -120,7 +120,7 @@
(define (mux-route-message m body) (define (mux-route-message m body)
(if (trie-lookup (mux-routing-table m) body #f) ;; some other stream has declared body (if (trie-lookup (mux-routing-table m) body #f) ;; some other stream has declared body
'() '()
(tset->list (trie-lookup (mux-routing-table m) (observe body) (datum-tset))))) (tset->list (trie-lookup (mux-routing-table m) (observe body) datum-tset-empty))))
(define (mux-interests-of m label) (define (mux-interests-of m label)
(hash-ref (mux-interest-table m) label (trie-empty))) (hash-ref (mux-interest-table m) label (trie-empty)))

View File

@ -4,6 +4,7 @@
(provide tset? (provide tset?
datum-tset datum-tset
datum-tset-empty
make-tset make-tset
tset-count tset-count
tset-empty tset-empty
@ -72,6 +73,8 @@
(define (tset-member? t k) (define (tset-member? t k)
(treap-has-key? t k)) (treap-has-key? t k))
(define datum-tset-empty (datum-tset))
(module+ test (module+ test
(require rackunit) (require rackunit)
(require data/order) (require data/order)