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))

Uses (9)

Used by (1)