def fold_rows
bendvy-ecs-core@0.1.0.4 · owned_event_runtime.bend:25
import bendvy-ecs-core@0.1.0.4/owned_event_runtime.bend as OwnedEventRuntime
import Base
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/transaction.bend as T
import bendvy-ecs-core@0.1.0.4/capabilities.bend as Cap
import bendvy-ecs-core@0.1.0.4/owned_event_storage.bend as Storage
import bendvy-ecs-core@0.1.0.4/ordinary_owned_event.bend as Ord
25def fold_rows(~S:Data,~C:Type,~R:Type,~P:Type,~Request:Type,~Projection:Data,~Args:Type,~Error:Data,~identity:Ord.Domain<S,P>,~at:P -> Request -> P & Projection,~body:@-H:Type -> @-read:Cap.Request<H,Request,Projection> -> H -> Args -> H & (T.Outcome<Error> & Args),keys:List<&2,Nat>,world:W.World<S,C,Storage.Resources<R,P>,Nat>,args:Args,+lagged:Bool) -> W.World<S,C,Storage.Resources<R,P>,Nat> & Reply<Error,Args>:
26 match keys:
27 case []:stopped(~S,~C,~R,~P,~Args,~Error,world,args,T.Success{},lagged)
28 case key <> remaining:visited(~S,~C,~R,~P,~Args,~Error,lagged,nextWorld => nextArgs => fold_rows(~S,~C,~R,~P,~Request,~Projection,~Args,~Error,~identity,~at,~body,remaining,nextWorld,nextArgs,lagged),Storage.read(~S,~C,~R,~P,~Request,~Projection,~Args,~(T.Outcome<Error> & Args),~at,~body,world,key,args))