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)) delta-aggregate))
(define at-meta-everything (pattern->trie #t (at-meta ?))) (define at-meta-everything (pattern->trie #t (at-meta ?)))
(define only-meta (datum-tset 'meta))
(define (echo-cancelled-trie t) (define (echo-cancelled-trie t)
(trie-subtract t (trie-subtract t
at-meta-everything at-meta-everything
#:combiner (lambda (v1 v2) #:combiner (lambda (v1 v2)
(if (tset-member? v1 'meta) (if (tset-member? v1 'meta)
only-meta only-meta-tset
#f)))) #f))))
(define (compute-patches old-m new-m label delta delta-aggregate) (define (compute-patches old-m new-m label delta delta-aggregate)

View File

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