def pair_retain_acc
bendvy-ecs-core@0.1.0.4 · ordinary_event_family.bend:69
import bendvy-ecs-core@0.1.0.4/ordinary_event_family.bend as OrdinaryEventFamily
import Base
import owner_product.bend as Product
import event_publication.bend as Publication
69def pair_retain_acc(~A:Data,~B:Data,~FA:Type,~FB:Type,~retainA:FA -> Nat -> List<&2,A> -> FA & List<&2,A>,~retainB:FB -> Nat -> List<&2,B> -> FB & List<&2,B>,records:List<&2,Publication.Publication<A,B>>,returned:Product.Owner<FA,FB> & Publication.Publication<A,B>,+tick:Nat,reversed:List<&2,Publication.Publication<A,B>>) -> Product.Owner<FA,FB> & List<&2,Publication.Publication<A,B>>:
70 match records:
71 case []:
72 (family,record)=returned
73 (family,List.reverse(&2,Publication.Publication<A,B>,Publication.retained_join(~A,~B,record,reversed)))
74 case head <> rest:
75 (family,record)=returned
76 pair_retain_acc(~A,~B,~FA,~FB,~retainA,~retainB,rest,retained_one(~A,~B,~FA,~FB,~retainA,~retainB,tick,head,family),tick,Publication.retained_join(~A,~B,record,reversed))