1 import Base 2 import ./ordinary_declaration.bend as Identity 3 import ./ordinary_component_binding.bend as Binding 4 import ./column.bend as Col 5 import ./world.bend as W 6 import ./structural.bend as St 7 import ./transaction.bend as Tx 8 9 def record(~S:Data,~C:Type,~Rest:Type,~P:Type,~V:Data,~Token:Data,~take:C -> Rest & Col.Column,~put:Rest -> Col.Column -> C,~view:P -> P & V,~E:Data,~inject:Identity.Declaration -> W.Handle -> E,~binding:Binding.Binding,handle:W.Handle) -> E: 10 inject(Binding.identity(~S,~C,~Rest,~P,~V,~Token,~take,~put,~view,binding),handle) 11 def remove(~S:Data,~C:Type,~R:Type,~E:Data,~Rest:Type,~P:Type,~V:Data,~Token:Data,~take:C -> Rest & Col.Column,~put:Rest -> Col.Column -> C,~view:P -> P & V,~inject:Identity.Declaration -> W.Handle -> E,~binding:Binding.Binding,tx:Tx.Tx,E>,handle:W.Handle) -> St.Queued,E>,P>: 12 St.tx_remove_observed(~S,~C,~R,~E,~Rest,~P,~V,~Token,~take,~put,~view,~record(~S,~C,~Rest,~P,~V,~Token,~take,~put,~view,~E,~inject,~binding),Binding.family(~S,~C,~Rest,~P,~V,~Token,~take,~put,~view,binding),tx,handle)