ordinary_app_machine_initialization_field.bend

bendvy-ecs-core@0.1.0.1 · 58 lines · 0 definitions

1import Base
2import bendvy-ecs-core@0.1.0.1/world.bend as W
3import bendvy-ecs-core@0.1.0.1/system.bend as Sys
4import bendvy-ecs-core@0.1.0.1/transaction.bend as T
5import bendvy-ecs-core@0.1.0.1/machine.bend as M
6import bendvy-ecs-core@0.1.0.1/machine_handlers.bend as H
7import bendvy-ecs-core@0.1.0.1/machine_handler_bundle.bend as B
8import bendvy-ecs-core@0.1.0.1/machine_stream.bend as St
9import bendvy-ecs-core@0.1.0.1/ordinary_machine_initialization.bend as Init
10import bendvy-ecs-core@0.1.0.1/ordinary_machine_initialization_marker.bend as Marker
11import bendvy-ecs-core@0.1.0.1/ordinary_machine_declaration.bend as Machine
12import bendvy-ecs-core@0.1.0.1/ordinary_machine_schedule.bend as Ordinary
13import bendvy-ecs-core@0.1.0.1/ordinary_app_machine_handler.bend as App
14import bendvy-ecs-core@0.1.0.1/ordinary_app_machine_handler_field.bend as Factory
15import bendvy-ecs-core@0.1.0.1/ordinary_app_resource_field_declaration.bend as D
16import bendvy-ecs-core@0.1.0.1/ordinary_resource_field_system.bend as Field
17import bendvy-ecs-core@0.1.0.1/machine_handler_trace.bend as TraceRun
18import bendvy-ecs-core@0.1.0.1/execution_trace.bend as Trace
19type Application<S:Data,K:Data,V:Data,Q:Data,C:Type,R:Type,E:Data,-runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,Extra:Type> is Type:
20  Application{app:App.Application<S,K,V,Q,C,R,E,runner,Extra>,reader:St.Reader<S,K>}
21type Definition<S:Data,K:Data,V:Data,Q:Data,C:Type,R:Type,E:Data,-runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,Extra:Type> is Type:
22  Bound{app:Application<S,K,V,Q,C,R,E,runner,Extra>}
23  Rejected{app:App.Application<S,K,V,Q,C,R,E,runner,Extra>}
24type RunResult<S:Data,K:Data,V:Data,Q:Data,C:Type,R:Type,E:Data,-runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,Extra:Type> is Type:
25  RunResult{result:App.RunResult<S,K,V,Q,C,R,E,runner,Extra>,reader:St.Reader<S,K>}
26def bound(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~Extra:Type,extra:Extra,debug:Bool,result:Marker.Definition<S,K,V,Q,C,R,E,runner>) -> Definition<S,K,V,Q,C,R,E,runner,Extra>:
27  match result:
28    case Marker.Bound{Marker.Application{world,bundle,reader,declaration}}:Bound{Application{App.Application{world,bundle,declaration,extra,debug},reader}}
29    case Marker.BindRejected{world,bundle,declaration}:Rejected{App.Application{world,bundle,declaration,extra,debug}}
30def bind(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~Extra:Type,~take:R -> R & Init.State<S,K,V>,~put:R -> Init.State<S,K,V> -> R,~same:V -> V -> Bool,~requirement_same:Q -> Q -> Bool,~has:W.World<S,C,R,E> -> Q -> W.World<S,C,R,E> & Bool,~frame:W.World<S,C,R,E> -> W.World<S,C,R,E>,~initial:Machine.Declaration<S,K,V,R,Init.take_slot(~S,~K,~V,~R,~take,~put)>,app:App.Application<S,K,V,Q,C,R,E,runner,Extra>) -> Definition<S,K,V,Q,C,R,E,runner,Extra>:
31  match app:
32    case App.Recovering{result,declaration,extra,debug}:Rejected{App.Recovering{result,declaration,extra,debug}}
33    case App.Application{world,bundle,declaration,extra,debug}:bound(~S,~K,~V,~Q,~C,~R,~E,~runner,~Extra,extra,debug,Marker.bind(~S,~K,~V,~R,~take,~put,~C,~E,~Q,~runner,~same,~requirement_same,~has,~frame,~initial,declaration,bundle,world))
34def enabled(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~Extra:Type,app:Application<S,K,V,Q,C,R,E,runner,Extra>,debug:Bool) -> Application<S,K,V,Q,C,R,E,runner,Extra>:
35  match app:
36    case Application{app,reader}:Application{App.enabled(~S,~K,~V,~Q,~C,~R,~E,~runner,~Extra,app,debug),reader}
37def snapshot_returned(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~Extra:Type,reader:St.Reader<S,K>,pair:App.Application<S,K,V,Q,C,R,E,runner,Extra> & Maybe<&2,App.Description<S,K,V,Q>>) -> Application<S,K,V,Q,C,R,E,runner,Extra> & Maybe<&2,App.Description<S,K,V,Q>>:
38  match pair:
39    case (app,description):(Application{app,reader},description)
40def snapshot(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~Extra:Type,app:Application<S,K,V,Q,C,R,E,runner,Extra>) -> Application<S,K,V,Q,C,R,E,runner,Extra> & Maybe<&2,App.Description<S,K,V,Q>>:
41  match app:
42    case Application{app,reader}:snapshot_returned(~S,~K,~V,~Q,~C,~R,~E,~runner,~Extra,reader,App.snapshot(~S,~K,~V,~Q,~C,~R,~E,~runner,~Extra,app))
43def captured_returned(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~Extra:Type,reader:St.Reader<S,K>,pair:App.RunResult<S,K,V,Q,C,R,E,runner,Extra> & Trace.Batch<String>) -> RunResult<S,K,V,Q,C,R,E,runner,Extra> & Trace.Batch<String>:
44  match pair:
45    case (result,batch):(RunResult{result,reader},batch)
46def captured(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~Extra:Type,declaration:Ordinary.Declaration<S>,extra:Extra,debug:Bool,name:String,value:Marker.ObservedMarkerRun<S,K,V,Q,C,R,E,runner>) -> RunResult<S,K,V,Q,C,R,E,runner,Extra> & Trace.Batch<String>:
47  match value:
48    case Marker.ObservedMarkerRun{reader,result}:captured_returned(~S,~K,~V,~Q,~C,~R,~E,~runner,~Extra,reader,Factory.returned(~S,~K,~V,~Q,~C,~R,~E,~runner,~Extra,declaration,extra,debug,TraceRun.captured(~S,~K,~V,~Q,~C,~R,~E,~runner,name,result)))
49def run(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~Ops:Type -> Type,~Value:Data,~declaration:D.Declaration<S,C,R,E,Ops,Value>,~body:@-H:Type -> @-caps:Ops(H) -> H.Invocation<V> -> H -> H & (T.Outcome<String> & Unit),~take:R -> R & Init.State<S,K,V>,~put:R -> Init.State<S,K,V> -> R,~same:V -> V -> Bool,~requirement_same:Q -> Q -> Bool,~has:W.World<S,C,R,E> -> Q -> W.World<S,C,R,E> & Bool,~frame:W.World<S,C,R,E> -> W.World<S,C,R,E>,~initial:Machine.Declaration<S,K,V,R,Init.take_slot(~S,~K,~V,~R,~take,~put)>,~Extra:Type,app:Application<S,K,V,Q,C,R,E,Field.runner(~S,~C,~R,~E,~Ops,~H.Invocation<V>,~String,~Unit,~D.ordinary(~S,~C,~R,~E,~Ops,~Value,declaration),~body),Extra>) -> RunResult<S,K,V,Q,C,R,E,Field.runner(~S,~C,~R,~E,~Ops,~H.Invocation<V>,~String,~Unit,~D.ordinary(~S,~C,~R,~E,~Ops,~Value,declaration),~body),Extra> & Trace.Batch<String>:
50  match app:
51    case Application{App.Recovering{result,declaration,extra,debug},reader}:(RunResult{App.RunResult{result,declaration,extra,debug},reader},Trace.Disabled{})
52    case Application{App.Application{world,bundle,Ordinary.Declaration{+name},extra,+debug},reader}:captured(~S,~K,~V,~Q,~C,~R,~E,~Field.runner(~S,~C,~R,~E,~Ops,~H.Invocation<V>,~String,~Unit,~D.ordinary(~S,~C,~R,~E,~Ops,~Value,declaration),~body),~Extra,Ordinary.Declaration{name},extra,debug,name,Marker.run_observed(~S,~K,~V,~R,~take,~put,~C,~E,~Q,~Field.runner(~S,~C,~R,~E,~Ops,~H.Invocation<V>,~String,~Unit,~D.ordinary(~S,~C,~R,~E,~Ops,~Value,declaration),~body),~Field.runner_observed(~S,~C,~R,~E,~Ops,~H.Invocation<V>,~String,~Unit,~D.ordinary(~S,~C,~R,~E,~Ops,~Value,declaration),~body),~Machine.name(~S,~K,~V,~R,~Init.take_slot(~S,~K,~V,~R,~take,~put),initial),~same,~requirement_same,~has,~frame,Ordinary.Declaration{name},bundle,reader,world,Factory.state(debug)))
53def resumed(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~Extra:Type,reader:St.Reader<S,K>,pair:App.Application<S,K,V,Q,C,R,E,runner,Extra> & B.Status<Q>) -> Application<S,K,V,Q,C,R,E,runner,Extra> & B.Status<Q>:
54  match pair:
55    case (app,status):(Application{app,reader},status)
56def resume(~S:Data,~K:Data,~V:Data,~Q:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~Extra:Type,value:RunResult<S,K,V,Q,C,R,E,runner,Extra>) -> Application<S,K,V,Q,C,R,E,runner,Extra> & B.Status<Q>:
57  match value:
58    case RunResult{result,reader}:resumed(~S,~K,~V,~Q,~C,~R,~E,~runner,~Extra,reader,Factory.resume(~S,~K,~V,~Q,~C,~R,~E,~runner,~Extra,result))