1 import Base 2 import ./ordinary_event_family.bend as Family 3 import ./event_publication.bend as Publication 4 5 # These are the existing Data-family singleton injections and ordered branch 6 # projections, specialized to log-local Nat IDs. Equal IDs on sibling branches 7 # remain distinct because each declaration binds both its route and resource path. 8 def inject_leaf(id:Nat) -> Nat:Family.inject_leaf(~Nat,id) 9 def inject_left(~A:Data,~B:Data,~inject:Nat -> A,id:Nat) -> Publication.Publication: 10 Family.inject_left(~Nat,~A,~B,~inject,id) 11 def inject_right(~A:Data,~B:Data,~inject:Nat -> B,id:Nat) -> Publication.Publication: 12 Family.inject_right(~Nat,~A,~B,~inject,id) 13 def select_leaf(ids:List<&2,Nat>) -> List<&2,Nat>:ids 14 def select_left(~A:Data,~B:Data,~select:List<&2,A> -> List<&2,Nat>,records:List<&2,Publication.Publication>) -> List<&2,Nat>: 15 select(Publication.first_values(~A,~B,records)) 16 def select_right(~A:Data,~B:Data,~select:List<&2,B> -> List<&2,Nat>,records:List<&2,Publication.Publication>) -> List<&2,Nat>: 17 select(Publication.second_values(~A,~B,records))