Share only-meta-tset between mux.rkt and patch.rkt

This commit is contained in:
Tony Garnock-Jones 2016-03-13 10:38:21 +00:00
parent 623140dc36
commit b1c773ddd4
2 changed files with 5 additions and 3 deletions

View File

@ -68,14 +68,13 @@
delta-aggregate))
(define at-meta-everything (pattern->trie #t (at-meta ?)))
(define only-meta (datum-tset 'meta))
(define (echo-cancelled-trie t)
(trie-subtract t
at-meta-everything
#:combiner (lambda (v1 v2)
(if (tset-member? v1 'meta)
only-meta
only-meta-tset
#f))))
(define (compute-patches old-m new-m label delta delta-aggregate)

View File

@ -18,6 +18,7 @@
label-patch
limit-patch
limit-patch/routing-table
only-meta-tset
compute-aggregate-patch
apply-patch
update-interests
@ -129,6 +130,8 @@
(trie-intersect out bound
#:combiner (lambda (v1 v2) (empty-tset-guard (tset-intersect v1 v2))))))
(define only-meta-tset (datum-tset 'meta))
;; Entries labelled with `label` may already exist in `base`; the
;; patch `p` MUST already have been limited to add only where no
;; `label`-labelled portions of `base` exist, and to remove only where
@ -167,7 +170,7 @@
;; ...except when `remove-meta?` is true. In that case, we need to
;; keep the point in the case that the only interest present is
;; `'meta`-labeled interest.
(if (and remove-meta? (equal? v2 (datum-tset 'meta)))
(if (and remove-meta? (eq? v2 only-meta-tset)) ;; N.B. relies on canonicity of v2 !
v1
#f))
(define (rem-combiner v1 v2)