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

Uses (13)

Used by (1)