1 import Base 2 import ./chunk_query.bend as Row 3 import ./execution_query_lifecycle.bend as Lifecycle 4 import ./execution_query_store.bend as Store 5 import ./execution_query_admission.bend as Admission 6 import ./execution_query_recipe.bend as Recipe 7 import ./execution_query_identity.bend as Id 8 import ./execution_query_schema.bend as Schema 9 import ./execution_query_matches.bend as Match 10 import ./execution_query.bend as Q 11 import ./execution_builder.bend as Build 12 import ./execution_state.bend as State 13 import ./execution_state_effect.bend as StateEffect 14 import ./execution_effects.bend as Effects 15 import ./execution_composer_layout.bend as L 16 import ./execution_lifecycle_notices.bend as Notice 17 import ./world.bend as W 18 import ./change_tick.bend as Tick 19 import ./lifecycle.bend as Life 20 import ./chunk_column.bend as Column 21 import ./chunk_shape.bend as Part 22 import ./execution_query_column.bend as EditColumn 23 def matched_view_checked(~V:Data,view:Maybe<&2,V>,matched:Bool) -> Q.GeneralLookup: 24 match matched: 25 case False{}:Q.NotMatched{} 26 case True{}:Q.Matched{view} 27 def matched_view(~V:Data,~predicate:Maybe<&2,V> -> Bool,presence:Match.Presence,+view:Maybe<&2,V>) -> Q.GeneralLookup: 28 matched_view_checked(~V,view,Bool.and(Match.membership(V,presence,view),predicate(view))) 29 def outside_view(~V:Data,~predicate:Maybe<&2,V> -> Bool,presence:Match.Presence,outside:Bool) -> Q.GeneralLookup: 30 match outside: 31 case False{}:Q.LookupRefused{} 32 case True{}:matched_view(~V,~predicate,presence,None{}) 33 def selected_lookup(~V:Data,~predicate:Maybe<&2,V> -> Bool,presence:Match.Presence,offset:U32,capacity:U32,lookup:Store.Lookup) -> Q.GeneralLookup: 34 match lookup: 35 case Store.Known{view}:matched_view(~V,~predicate,presence,view) 36 case Store.OutsideDomain{}:outside_view(~V,~predicate,presence,U32.is_le(capacity,offset)) 37 def query_row(~S:Data,~V:Data,handle:W.Handle,row:Q.GeneralLookup,tail:Q.GeneralReport) -> Q.GeneralReport: 38 match row tail: 39 case Q.Matched{view} Q.SelectedRows{rows}:Q.SelectedRows{Q.GeneralRow{handle,view} <> rows} 40 case Q.NotMatched{} tail:tail 41 case _ _:Q.SelectionRefused{} 42 type WholeFrame<-S:Data,-full:L.Layout,-route:L.Route,-R:Type> is Type: 43 WholeFrame{rest:L.column_rest(~S,full,route),resource:R,handles:List<&2,W.Handle>,tick:Tick.Tick,prior:Maybe<&2,Tick.Tick>,lifecycleView:Notice.View} 44 def whole_scope(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,frame:WholeFrame,column:Column.Column) -> State.Scope: 45 match frame: 46 case WholeFrame{rest,resource,handles,tick,prior,+view}:State.Scope{L.column_put(~S,full,route,rest,L.ColumnSlot{column}),resource,handles,tick,prior,view} 47 def whole_lookup(~V:Data,view:Maybe<&2,V>,inside:Bool) -> Store.Lookup: 48 match inside: 49 case True{}:Store.Known{view} 50 case False{}:Store.OutsideDomain{} 51 def whole_cached(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,frame:WholeFrame,+offset:U32,+capacity:U32,result:Column.Column & Maybe<&2,L.view(full,route)>) -> State.Scope & Q.GeneralLookup: 52 match result: 53 case (column,view):(whole_scope(~S,~full,~route,~R,frame,column),selected_lookup(~L.view(full,route),~predicate,presence,offset,capacity,whole_lookup(~L.view(full,route),view,U32.is_lt(offset,capacity)))) 54 def whole_taken(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,resource:R,handles:List<&2,W.Handle>,tick:Tick.Tick,prior:Maybe<&2,Tick.Tick>,view:Notice.View,+offset:U32,capacity:U32,result:L.column_rest(~S,full,route) & L.ColumnSlot) -> State.Scope & Q.GeneralLookup: 55 match result: 56 case (rest,L.ColumnSlot{column}):whole_cached(~S,~full,~route,~R,~presence,~predicate,WholeFrame{rest,resource,handles,tick,prior,view},offset,capacity,Column.view(~S,~L.stored(full,route),~L.view(full,route),~L.read(~L.payload(full,route),~L.view(full,route)),column,offset)) 57 def whole_described_allowed(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,scope:State.Scope,offset:U32,capacity:U32,allowed:Bool) -> State.Scope & Q.GeneralLookup: 58 match scope allowed: 59 case scope False{}:(scope,Q.NotMatched{}) 60 case State.Scope{columns,resource,handles,tick,prior,+view} True{}:whole_taken(~S,~full,~route,~R,~presence,~predicate,resource,handles,tick,prior,view,offset,capacity,L.column_take(~S,full,route,columns)) 61 def whole_bound_done(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,resource:R,handles:List<&2,W.Handle>,tick:Tick.Tick,prior:Maybe<&2,Tick.Tick>,view:Notice.View,offset:U32,capacity:U32,result:L.columns(~S,full) & Bool) -> State.Scope & Q.GeneralLookup: 62 match result: 63 case (columns,selected):whole_described_allowed(~S,~full,~route,~R,~presence,~predicate,State.Scope{columns,resource,handles,tick,prior,view},offset,capacity,selected) 64 def whole_described(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,resource:R,handles:List<&2,W.Handle>,+tick:Tick.Tick,+prior:Maybe<&2,Tick.Tick>,view:Notice.View,+offset:U32,result:Schema.Description) -> State.Scope & Q.GeneralLookup: 65 match result: 66 case Schema.Description{columns,+info,True{}}:whole_bound_done(~S,~full,~route,~R,~presence,~predicate,resource,handles,tick,prior,view,offset,Admission.capacity(Admission.info_at(route,info)),Lifecycle.whole_bound(~S,~full,info,bound,offset,prior,tick,columns)) 67 case Schema.Description{columns,_,False{}}:(State.Scope{columns,resource,handles,tick,prior,view},Q.LookupRefused{}) 68 def whole_physical(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,scope:State.Scope,checked:Id.Offset) -> State.Scope & Q.GeneralLookup: 69 match scope checked: 70 case State.Scope{columns,resource,handles,tick,prior,+view} Id.Physical{_,offset}:whole_described(~S,~full,~route,~R,~bound,~presence,~predicate,resource,handles,tick,prior,view,offset,Schema.describe(~S,full,L.AtLeaf{},columns)) 71 case scope _:(scope,Q.MissingEntity{}) 72 def whole_get(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,scope:State.Scope,handle:W.Handle) -> State.Scope & Q.GeneralLookup: 73 match scope: 74 case State.Scope{columns,resource,+handles,tick,prior,+view}:whole_physical(~S,~full,~route,~R,~bound,~presence,~predicate,State.Scope{columns,resource,handles,tick,prior,view},Id.captured_offset(~S,handles,handle)) 75 def whole_edit_returned(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,-Out:Type,frame:WholeFrame,result:EditColumn.Edit) -> State.Scope & Q.GeneralEdit: 76 match result: 77 case EditColumn.Edited{column,out}:(whole_scope(~S,~full,~route,~R,frame,column),Q.GeneralEdited{out}) 78 case EditColumn.Unchanged{column,unused}:(whole_scope(~S,~full,~route,~R,frame,column),Q.GeneralUnchanged{unused}) 79 def whole_edit_taken(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,-Out:Type,resource:R,handles:List<&2,W.Handle>,+tick:Tick.Tick,prior:Maybe<&2,Tick.Tick>,view:Notice.View,offset:U32,transform:L.payload(full,route) -> L.payload(full,route) & Out,result:L.column_rest(~S,full,route) & L.ColumnSlot) -> State.Scope & Q.GeneralEdit: 80 match result: 81 case (rest,L.ColumnSlot{column}):whole_edit_returned(~S,~full,~route,~R,Out,WholeFrame{rest,resource,handles,tick,prior,view},EditColumn.edit(~S,~full,~route,Out,column,offset,tick,transform)) 82 def whole_edit_physical(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,-Out:Type,scope:State.Scope,transform:L.payload(full,route) -> L.payload(full,route) & Out,checked:Id.Offset) -> State.Scope & Q.GeneralEdit: 83 match scope checked: 84 case State.Scope{columns,resource,handles,tick,prior,+view} Id.Physical{_,offset}:whole_edit_taken(~S,~full,~route,~R,Out,resource,handles,tick,prior,view,offset,transform,L.column_take(~S,full,route,columns)) 85 case scope _:(scope,Q.GeneralUnchanged{transform}) 86 def whole_edit_matched(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,-Out:Type,handle:W.Handle,transform:L.payload(full,route) -> L.payload(full,route) & Out,result:State.Scope & Q.GeneralLookup) -> State.Scope & Q.GeneralEdit: 87 match result: 88 case (State.Scope{columns,resource,+handles,tick,prior,+view},Q.Matched{_}):whole_edit_physical(~S,~full,~route,~R,Out,State.Scope{columns,resource,handles,tick,prior,view},transform,Id.captured_offset(~S,handles,handle)) 89 case (scope,_):(scope,Q.GeneralUnchanged{transform}) 90 def whole_modify(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,-Out:Type,scope:State.Scope,+handle:W.Handle,transform:L.payload(full,route) -> L.payload(full,route) & Out) -> State.Scope & Q.GeneralEdit: 91 whole_edit_matched(~S,~full,~route,~R,Out,handle,transform,whole_get(~S,~full,~route,~R,~bound,~presence,~predicate,scope,handle)) 92 93 def whole_row_got(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,handle:W.Handle,tail:Q.GeneralReport,result:State.Scope & Q.GeneralLookup) -> State.Scope & Q.GeneralReport: 94 match result: 95 case (scope,row):(scope,query_row(~S,~L.view(full,route),handle,row,tail)) 96 def whole_known_physical(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,+info:List<&2,Schema.Info>,scope:State.Scope,checked:Id.Offset) -> State.Scope & Q.GeneralLookup: 97 match scope checked: 98 case State.Scope{columns,resource,handles,+tick,+prior,view} Id.Physical{_,+offset}:whole_bound_done(~S,~full,~route,~R,~presence,~predicate,resource,handles,tick,prior,view,offset,Admission.capacity(Admission.info_at(route,info)),Lifecycle.whole_bound(~S,~full,info,bound,offset,prior,tick,columns)) 99 case scope _:(scope,Q.MissingEntity{}) 100 def whole_known_get(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,info:List<&2,Schema.Info>,scope:State.Scope,handle:W.Handle) -> State.Scope & Q.GeneralLookup: 101 match scope: 102 case State.Scope{columns,resource,+handles,tick,prior,view}:whole_known_physical(~S,~full,~route,~R,~bound,~presence,~predicate,info,State.Scope{columns,resource,handles,tick,prior,view},Id.captured_offset(~S,handles,handle)) 103 def whole_row_tail(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,info:List<&2,Schema.Info>,+handle:W.Handle,result:State.Scope & Q.GeneralReport) -> State.Scope & Q.GeneralReport: 104 match result: 105 case (scope,tail):whole_row_got(~S,~full,~route,~R,handle,tail,whole_known_get(~S,~full,~route,~R,~bound,~presence,~predicate,info,scope,handle)) 106 def whole_rows(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,+info:List<&2,Schema.Info>,candidates:List<&2,W.Handle>,scope:State.Scope) -> State.Scope & Q.GeneralReport: 107 match candidates: 108 case []:(scope,Q.SelectedRows{[]}) 109 case +handle <> rest:whole_row_tail(~S,~full,~route,~R,~bound,~presence,~predicate,info,handle,whole_rows(~S,~full,~route,~R,~bound,~presence,~predicate,info,rest,scope)) 110 def whole_query_described(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,resource:R,+handles:List<&2,W.Handle>,tick:Tick.Tick,prior:Maybe<&2,Tick.Tick>,view:Notice.View,description:Schema.Description) -> State.Scope & Q.GeneralReport: 111 match description: 112 case Schema.Description{columns,info,True{}}:whole_rows(~S,~full,~route,~R,~bound,~presence,~predicate,info,handles,State.Scope{columns,resource,handles,tick,prior,view}) 113 case Schema.Description{columns,_,False{}}:(State.Scope{columns,resource,handles,tick,prior,view},Q.SelectionRefused{}) 114 def whole_query(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,scope:State.Scope) -> State.Scope & Q.GeneralReport: 115 match scope: 116 case State.Scope{columns,resource,handles,tick,prior,view}:whole_query_described(~S,~full,~route,~R,~bound,~presence,~predicate,resource,handles,tick,prior,view,Schema.describe(~S,full,L.AtLeaf{},columns)) 117 118 def whole_reader(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool) -> Q.GeneralReader,L.view(full,route)>: 119 Q.GeneralReader{scope=>whole_query(~S,~full,~route,~R,~bound,~presence,~predicate,scope),scope=>handle=>whole_get(~S,~full,~route,~R,~bound,~presence,~predicate,scope,handle)} 120 def whole_caps_direct(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,kind:Recipe.QueryKind) -> Q.GeneralOps(~S,~L.payload(full,route),~L.view(full,route),kind,State.Scope): 121 match kind: 122 case Recipe.ReadRows{}:whole_reader(~S,~full,~route,~R,~bound,~presence,~predicate) 123 case Recipe.WriteRows{}:Q.GeneralWriter{whole_reader(~S,~full,~route,~R,~bound,~presence,~predicate),Out=>scope=>handle=>transform=>whole_modify(~S,~full,~route,~R,~bound,~presence,~predicate,Out,scope,handle,transform)} 124 def whole_caps(~S:Data,~full:L.Layout,~route:L.Route,~C:Type,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,same:{C == L.columns(~S,full) : Type},kind:Recipe.QueryKind) -> Q.GeneralOps(~S,~L.payload(full,route),~L.view(full,route),kind,State.Scope): 125 %Equal.sym(Type,C,L.columns(~S,full),same) : Q.GeneralOps(~S,~L.payload(full,route),~L.view(full,route),kind,State.Scope) 126 whole_caps_direct(~S,~full,~route,~R,~bound,~presence,~predicate,kind) 127 128 def selected_handles(~S:Data,~V:Data,rows:List<&2,Q.GeneralRow>) -> List<&2,W.Handle>: 129 match rows: 130 case []:[] 131 case Q.GeneralRow{handle,Some{_}} <> rest:handle <> selected_handles(~S,~V,rest) 132 case Q.GeneralRow{_,None{}} <> rest:selected_handles(~S,~V,rest) 133 def requested_member(~S:Data,handle:W.Handle,targets:Q.GeneralTargets) -> Bool: 134 match targets: 135 case Q.AllMatched{}:True{} 136 case Q.ExplicitHandles{requested}:State.member(~S,handle,requested) 137 def members(~S:Data,requested:List<&2,W.Handle>,+selected:List<&2,W.Handle>) -> Bool: 138 match requested: 139 case []:True{} 140 case handle <> rest:Bool.and(State.member(~S,handle,selected),members(~S,rest,selected)) 141 def row_errors(~E:Data,index:U32,errors:List<&2,Row.Error>,error:Maybe<&2,E>) -> List<&2,Row.Error>: 142 match error: 143 case None{}:errors 144 case Some{value}:Row.Error{index,value} <> errors 145 def row_operation(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~P:Type,~V:Data,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~P,~V,~O,~E),handle:W.Handle,view:V,payload:P,state:O & Maybe<&2,E>) -> F(P & (O & Maybe<&2,E>)): 146 match state: 147 case (output,_):body(handle,view,payload,output) 148 def row_updated(~S:Data,~F:Type -> Type,~C:Type,~O:Type,~E:Data,index:U32,errors:List<&2,Row.Error>,next:Column.Column -> O -> List<&2,Row.Error> -> F(Column.Column & (O & List<&2,Row.Error>)),result:EditColumn.Update>) -> F(Column.Column & (O & List<&2,Row.Error>)): 149 match result: 150 case EditColumn.Updated{column,(output,error),_}:next(column,output,row_errors(~E,index,errors,error)) 151 def row_allowed(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),shape:Part.Shape,column:Column.Column,+index:U32,tick:Tick.Tick,handle:W.Handle,view:L.view(full,route),output:O,errors:List<&2,Row.Error>,next:Column.Column -> O -> List<&2,Row.Error> -> F(Column.Column & (O & List<&2,Row.Error>)),allowed:Bool) -> F(Column.Column & (O & List<&2,Row.Error>)): 152 match allowed: 153 case False{}:next(column,output,errors) 154 case True{}:Effects.bind(~F,EditColumn.Update>,Column.Column & (O & List<&2,Row.Error>),effects,EditColumn.effect_tree(~S,~F,~effects,~full,~route,O & Maybe<&2,E>,shape,column,index,tick,(output,None{}),payload=>state=>row_operation(~S,~Permit,~F,~effects,~L.payload(full,route),~L.view(full,route),~O,~E,~body,handle,view,payload,state)),result=>row_updated(~S,~F,~L.stored(full,route),~O,~E,index,errors,next,result)) 155 def filter_stamp(mode:Q.Mode,prior:Maybe<&2,Tick.Tick>,tick:Tick.Tick,stamp:Maybe<&2,Life.Stamp>) -> Bool: 156 match mode stamp: 157 case Q.AllRows{} _:True{} 158 case Q.Where{filter} Some{stamp}:Life.matches(filter,stamp,prior,tick) 159 case _ _:False{} 160 def row_stamped(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),shape:Part.Shape,index:U32,+tick:Tick.Tick,prior:Maybe<&2,Tick.Tick>,mode:Q.Mode,handle:W.Handle,view:L.view(full,route),output:O,errors:List<&2,Row.Error>,next:Column.Column -> O -> List<&2,Row.Error> -> F(Column.Column & (O & List<&2,Row.Error>)),result:Column.Column & Maybe<&2,Life.Stamp>) -> F(Column.Column & (O & List<&2,Row.Error>)): 161 match result: 162 case (column,stamp):row_allowed(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,column,index,tick,handle,view,output,errors,next,filter_stamp(mode,prior,tick,stamp)) 163 def row_selected(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),shape:Part.Shape,column:Column.Column,+index:U32,+tick:Tick.Tick,prior:Maybe<&2,Tick.Tick>,mode:Q.Mode,handle:W.Handle,view:L.view(full,route),output:O,errors:List<&2,Row.Error>,next:Column.Column -> O -> List<&2,Row.Error> -> F(Column.Column & (O & List<&2,Row.Error>)),selected:Bool) -> F(Column.Column & (O & List<&2,Row.Error>)): 164 match mode selected: 165 case _ False{}:next(column,output,errors) 166 case Q.AllRows{} True{}:row_allowed(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,column,index,tick,handle,view,output,errors,next,True{}) 167 case mode True{}:row_stamped(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,index,tick,prior,mode,handle,view,output,errors,next,Column.lifecycle(~S,~L.stored(full,route),column,index)) 168 def traverse_rows(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),+shape:Part.Shape,+capacity:U32,rows:List<&2,Q.GeneralRow>,column:Column.Column,+tick:Tick.Tick,+prior:Maybe<&2,Tick.Tick>,+mode:Q.Mode,+requested:Q.GeneralTargets,output:O,errors:List<&2,Row.Error>) -> F(Column.Column & (O & List<&2,Row.Error>)): 169 match rows: 170 case []:Effects.pure(~F,Column.Column & (O & List<&2,Row.Error>),effects,(column,(output,List.reverse(&2,Row.Error,errors)))) 171 case Q.GeneralRow{_,None{}} <> rest:traverse_rows(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,capacity,rest,column,tick,prior,mode,requested,output,errors) 172 case Q.GeneralRow{+handle,Some{view}} <> rest:row_selected(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,column,U32.sub(W.handle_index(~S,handle),1),tick,prior,mode,handle,view,output,errors,(column=>output=>errors=>traverse_rows(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,capacity,rest,column,tick,prior,mode,requested,output,errors)),Bool.and(requested_member(~S,handle,requested),U32.is_le(W.handle_index(~S,handle),capacity))) 173 def traversal_returned(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~O:Type,~E:Data,frame:WholeFrame,result:Column.Column & (O & List<&2,Row.Error>)) -> State.Scope & (O & Q.Report): 174 match result: 175 case (column,(output,errors)):(whole_scope(~S,~full,~route,~R,frame,column),(output,Q.Completed{errors})) 176 def traversal_inspected(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~R:Type,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),frame:WholeFrame,tick:Tick.Tick,prior:Maybe<&2,Tick.Tick>,mode:Q.Mode,requested:Q.GeneralTargets,rows:List<&2,Q.GeneralRow>,output:O,result:Column.Column & Part.Inspection) -> F(State.Scope & (O & Q.Report)): 177 match result: 178 case (column,Part.Inspection{_,_,False{}}):Effects.pure(~F,State.Scope & (O & Q.Report),effects,(whole_scope(~S,~full,~route,~R,frame,column),(output,Q.LayoutRefused{}))) 179 case (column,Part.Inspection{shape,capacity,True{}}):Effects.map(~F,Column.Column & (O & List<&2,Row.Error>),State.Scope & (O & Q.Report),effects,traverse_rows(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,capacity,rows,column,tick,prior,mode,requested,output,[]),result=>traversal_returned(~S,~full,~route,~R,~O,~E,frame,result)) 180 def traversal_taken(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~R:Type,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),resource:R,handles:List<&2,W.Handle>,+tick:Tick.Tick,+prior:Maybe<&2,Tick.Tick>,view:Notice.View,mode:Q.Mode,requested:Q.GeneralTargets,rows:List<&2,Q.GeneralRow>,output:O,result:L.column_rest(~S,full,route) & L.ColumnSlot) -> F(State.Scope & (O & Q.Report)): 181 match result: 182 case (rest,L.ColumnSlot{column}):traversal_inspected(~S,~Permit,~F,~effects,~full,~route,~R,~O,~E,~body,WholeFrame{rest,resource,handles,tick,prior,view},tick,prior,mode,requested,rows,output,Part.inspect(S,L.stored(full,route),column)) 183 def traversal_validated(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~R:Type,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),scope:State.Scope,mode:Q.Mode,rows:List<&2,Q.GeneralRow>,output:O,checked:Id.TargetCheck,allowed:Bool) -> F(State.Scope & (O & Q.Report)): 184 match scope checked allowed: 185 case State.Scope{columns,resource,handles,tick,prior,view} Id.Targets{requested,_} True{}:traversal_taken(~S,~Permit,~F,~effects,~full,~route,~R,~O,~E,~body,resource,handles,tick,prior,view,mode,Q.ExplicitHandles{requested},rows,output,L.column_take(~S,full,route,columns)) 186 case scope _ _:Effects.pure(~F,State.Scope & (O & Q.Report),effects,(scope,(output,Q.LayoutRefused{}))) 187 def traversal_requested(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~R:Type,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),scope:State.Scope,mode:Q.Mode,rows:List<&2,Q.GeneralRow>,output:O,+selected:List<&2,W.Handle>,+requested:List<&2,W.Handle>) -> F(State.Scope & (O & Q.Report)): 188 match scope: 189 case State.Scope{columns,resource,+handles,tick,prior,+view}:traversal_validated(~S,~Permit,~F,~effects,~full,~route,~R,~O,~E,~body,State.Scope{columns,resource,handles,tick,prior,view},mode,rows,output,Id.targets_offsets(~S,requested,Id.target_offsets(~S,Q.view_namespace(~S,view),handles,requested)),members(~S,requested,selected)) 190 def traversal_queried(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~R:Type,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),mode:Q.Mode,output:O,targets:Q.GeneralTargets,result:State.Scope & Q.GeneralReport) -> F(State.Scope & (O & Q.Report)): 191 match targets result: 192 case _, (scope,Q.SelectionRefused{}):Effects.pure(~F,State.Scope & (O & Q.Report),effects,(scope,(output,Q.LayoutRefused{}))) 193 case Q.AllMatched{}, (State.Scope{columns,resource,handles,tick,prior,view},Q.SelectedRows{rows}):traversal_taken(~S,~Permit,~F,~effects,~full,~route,~R,~O,~E,~body,resource,handles,tick,prior,view,mode,Q.AllMatched{},rows,output,L.column_take(~S,full,route,columns)) 194 case Q.ExplicitHandles{requested}, (scope,Q.SelectedRows{+rows}):traversal_requested(~S,~Permit,~F,~effects,~full,~route,~R,~O,~E,~body,scope,mode,rows,output,selected_handles(~S,~L.view(full,route),rows),requested) 195 def traversal_live(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),mode:Q.Mode,scope:State.Scope,output:O,targets:Q.GeneralTargets,checked:Id.TargetCheck) -> F(State.Scope & (O & Q.Report)): 196 match checked: 197 case Id.Refused{_}:Effects.pure(~F,State.Scope & (O & Q.Report),effects,(scope,(output,Q.LayoutRefused{}))) 198 case Id.Targets{_,_}:traversal_queried(~S,~Permit,~F,~effects,~full,~route,~R,~O,~E,~body,mode,output,targets,whole_query(~S,~full,~route,~R,~bound,~presence,~predicate,scope)) 199 def whole_traverse(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),mode:Q.Mode,scope:State.Scope,output:O,targets:Q.GeneralTargets) -> F(State.Scope & (O & Q.Report)): 200 match scope: 201 case State.Scope{columns,resource,+handles,tick,prior,+view}:traversal_live(~S,~Permit,~F,~effects,~full,~route,~R,~bound,~presence,~predicate,~O,~E,~body,mode,State.Scope{columns,resource,handles,tick,prior,view},output,targets,Id.targets(~S,Q.view_namespace(~S,view),handles)) 202 203 def ordinary_provider(~S:Data,~WC:Type,~C:Type,~R:Type,~full:L.Layout,~route:L.Route,~same:{WC == L.columns(~S,full) : Type},~valid:{L.grant_valid(~full,~route) == True{} : Bool},~local:{C == L.columns(~S,full) : Type},~kind:Recipe.QueryKind,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool) -> Q.GeneralOps(~S,~L.payload(full,route),~L.view(full,route),kind,State.Scope): 204 whole_caps(~S,~full,~route,~C,~R,~bound,~presence,~predicate,local,kind) 205 def pure_body(~S:Data,~P:Type,~V:Data,~O:Type,~E:Data,~body:W.Handle -> V -> P -> O -> P & (O & Maybe<&2,E>),handle:W.Handle,view:V,payload:P,output:O) -> P & (O & Maybe<&2,E>): 206 body(handle,view,payload,output) 207 def whole_output_caps_direct(~S:Data,~full:L.Layout,~route:L.Route,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,~O:Type,~E:Data,~body:W.Handle -> L.view(full,route) -> L.payload(full,route) -> O -> L.payload(full,route) & (O & Maybe<&2,E>)) -> Q.GeneralOutputWriter,L.payload(full,route),L.view(full,route),O,E>: 208 Q.GeneralOutputWriter{whole_reader(~S,~full,~route,~R,~bound,~presence,~predicate),Out=>scope=>handle=>transform=>whole_modify(~S,~full,~route,~R,~bound,~presence,~predicate,Out,scope,handle,transform),whole_traverse(~S,~Unit,~Effects.Identity,~Effects.identity(),~full,~route,~R,~bound,~presence,~predicate,~O,~E,~pure_body(~S,~L.payload(full,route),~L.view(full,route),~O,~E,~body))} 209 def whole_output_caps(~S:Data,~full:L.Layout,~route:L.Route,~C:Type,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,~O:Type,~E:Data,~body:W.Handle -> L.view(full,route) -> L.payload(full,route) -> O -> L.payload(full,route) & (O & Maybe<&2,E>),same:{C == L.columns(~S,full) : Type}) -> Q.GeneralOutputWriter,L.payload(full,route),L.view(full,route),O,E>: 210 %Equal.sym(Type,C,L.columns(~S,full),same) : Q.GeneralOutputWriter,L.payload(full,route),L.view(full,route),O,E> 211 whole_output_caps_direct(~S,~full,~route,~R,~bound,~presence,~predicate,~O,~E,~body) 212 def output_provider(~S:Data,~WC:Type,~C:Type,~R:Type,~full:L.Layout,~route:L.Route,~same:{WC == L.columns(~S,full) : Type},~valid:{L.grant_valid(~full,~route) == True{} : Bool},~local:{C == L.columns(~S,full) : Type},~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,~O:Type,~E:Data,~body:W.Handle -> L.view(full,route) -> L.payload(full,route) -> O -> L.payload(full,route) & (O & Maybe<&2,E>)) -> Q.GeneralOutputWriter,L.payload(full,route),L.view(full,route),O,E>: 213 whole_output_caps(~S,~full,~route,~C,~R,~bound,~presence,~predicate,~O,~E,~body,local) 214 def whole_sequential_caps(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects,~full:L.Layout,~route:L.Route,~C:Type,~R:Type,~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),mode:Q.Mode,same:{C == L.columns(~S,full) : Type}) -> Q.SequentialOutputEach,O,E>: 215 %Equal.sym(Type,C,L.columns(~S,full),same) : Q.SequentialOutputEach,O,E> 216 Q.SequentialOutputEach{scope=>output=>whole_traverse(~S,~Permit,~F,~effects,~full,~route,~R,~bound,~presence,~predicate,~O,~E,~body,mode,scope,output,Q.AllMatched{})} 217 def sequential_provider(~S:Data,~WC:Type,~C:Type,~R:Type,~F:Type -> Type,~effects:Effects.Effects,~Permit:Data,~full:L.Layout,~route:L.Route,~same:{WC == L.columns(~S,full) : Type},~valid:{L.grant_valid(~full,~route) == True{} : Bool},~local:{C == L.columns(~S,full) : Type},~bound:Recipe.Bound,~presence:Match.Presence,~predicate:Maybe<&2,L.view(full,route)> -> Bool,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),mode:Q.Mode) -> Q.SequentialOutputEach,O,E>: 218 whole_sequential_caps(~S,~Permit,~F,~effects,~full,~route,~C,~R,~bound,~presence,~predicate,~O,~E,~body,mode,local) 219 def provider_dictionary(~S:Data,~WC:Type,~C:Type,~R:Type,~Ops:Type,~selection:Build.GeneralProviderSelection(~S,~WC,~C,~R,~StateEffect.Transition(~State.Invocation),~Ops)) -> Ops: 220 selection(ordinary_provider(~S,~WC,~C,~R),output_provider(~S,~WC,~C,~R),sequential_provider(~S,~WC,~C,~R,~StateEffect.Transition(~State.Invocation),~StateEffect.dictionary(~State.Invocation)))