ordinary_app_machine_handler_field.bend

bendvy-ecs-core@0.1.0.1 · 55 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_world.bend as MachineWorld
9import bendvy-ecs-core@0.1.0.1/ordinary_machine_declaration.bend as Machine
10import bendvy-ecs-core@0.1.0.1/ordinary_machine_schedule.bend as Ordinary
11import bendvy-ecs-core@0.1.0.1/ordinary_app_machine_handler.bend as App
12import bendvy-ecs-core@0.1.0.1/ordinary_app_resource_field_declaration.bend as D
13import bendvy-ecs-core@0.1.0.1/ordinary_resource_field_system.bend as Field
14import bendvy-ecs-core@0.1.0.1/ordinary_machine_handler_bundle_context.bend as Operation
15import bendvy-ecs-core@0.1.0.1/machine_handler_trace.bend as TraceRun
16import bendvy-ecs-core@0.1.0.1/ordinary_machine_handler_bundle.bend as Classic
17import bendvy-ecs-core@0.1.0.1/execution_trace.bend as Trace
18import bendvy-ecs-core@0.1.0.1/trace_facts.bend as Facts
19type Registration<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>> is Type:
20  Registered{world:W.World<S,C,R,E>,entry:B.Scheduled<S,K,V,Q,C,R,E,runner>}
21  Rejected{world:W.World<S,C,R,E>,selector:B.Selector<S,K,V>,requirements:List<&2,Q>,ordinal:U32,name:String}
22def access_fields(~S:Data,~Owner:Type,~Ops:Type,value:Field.Declaration<S,Owner,Ops>) -> List<&2,String>:
23  match value:
24    case Field.Declaration{_,clauses}:Field.access(~S,clauses)
25def access(~S:Data,~C:Type,~R:Type,~E:Data,~Ops:Type -> Type,~Value:Data,~declaration:D.Declaration<S,C,R,E,Ops,Value>) -> List<&2,String>:
26  access_fields(~S,~T.Tx<W.World<S,C,R,E>,E>,~Ops(T.Tx<W.World<S,C,R,E>,E>),D.ordinary(~S,~C,~R,~E,~Ops,~Value,declaration))
27def registered(~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>,selector:B.Selector<S,K,V>,requirements:List<&2,Q>,ordinal:U32,name:String,result:Sys.RegistrationResult<S,C,R,E,H.Invocation<V>,String,Unit,runner>) -> Registration<S,K,V,Q,C,R,E,runner>:
28  match result:
29    case Sys.Registered{world,registry}:Registered{world,B.Scheduled{selector,requirements,H.Entry{ordinal,registry}}}
30    case Sys.RegistrationFailed{world}:Rejected{world,selector,requirements,ordinal,name}
31def register(~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),world:W.World<S,C,R,E>,selector:B.Selector<S,K,V>,requirements:List<&2,Q>,ordinal:U32,+name:String) -> Registration<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)>:
32  registered(~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),selector,requirements,ordinal,name,Sys.register(~S,~C,~R,~E,~H.Invocation<V>,~String,~Unit,~Field.runner(~S,~C,~R,~E,~Ops,~H.Invocation<V>,~String,~Unit,~D.ordinary(~S,~C,~R,~E,~Ops,~Value,declaration),~body),world,name,access(~S,~C,~R,~E,~Ops,~Value,~declaration)))
33def Application(~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),~Extra:Type) -> 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>
34def Bundle(~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)) -> Type:B.Bundle<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)>
35def Entry(~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)) -> Type:B.Scheduled<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)>
36def bind(~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),~Extra:Type,world:W.World<S,C,R,E>,bundle:B.Bundle<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)>,phase:Ordinary.Declaration<S>,extra:Extra) -> 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>:
37  App.bind(~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,world,bundle,phase,extra)
38def 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,declaration:Ordinary.Declaration<S>,extra:Extra,debug:Bool,result:Classic.MarkerResult<S,K,V,Q,C,R,E,runner> & Trace.Batch<String>) -> App.RunResult<S,K,V,Q,C,R,E,runner,Extra> & Trace.Batch<String>:
39  match result:
40    case (result,batch):(App.RunResult{result,declaration,extra,debug},batch)
41def state(debug:Bool) -> Facts.State:
42  match debug:
43    case False{}:Facts.Off{}
44    case True{}:Facts.On{[]}
45def 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 & M.Slot<S,K,V>,~put:R -> M.Slot<S,K,V> -> R,~machine:Machine.Declaration<S,K,V,R,take>,~publish:W.World<S,C,R,E> -> M.Transition<V> -> W.World<S,C,R,E>,~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>,~Extra:Type,app: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>) -> App.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>:
46  match app:
47    case App.Recovering{result,declaration,extra,debug}:(App.RunResult{result,declaration,extra,debug},Trace.Disabled{})
48    case App.Application{world,bundle,Ordinary.Declaration{+name},extra,+debug}:returned(~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,TraceRun.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),name,Operation.run(~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),~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,~take,machine),~MachineWorld.take(~S,~K,~V,~C,~R,~E,~take),~MachineWorld.put(~S,~K,~V,~C,~R,~E,~put),~publish,~same,~requirement_same,~has,~frame,Ordinary.Declaration{name},bundle,world,state(debug))))
49def 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,declaration:Ordinary.Declaration<S>,extra:Extra,debug:Bool,value:Classic.MarkerResult<S,K,V,Q,C,R,E,runner>) -> App.Application<S,K,V,Q,C,R,E,runner,Extra> & B.Status<Q>:
50  match value:
51    case Classic.MarkerResult{B.Returned{bundle,world,status},_,_}:(App.Application{world,bundle,declaration,extra,debug},status)
52    case Classic.MarkerResult{B.InternalOwnerRemainder{namespace,recovery,world,+status},steps,observations}:(App.Recovering{Classic.MarkerResult{B.InternalOwnerRemainder{namespace,recovery,world,status},steps,observations},declaration,extra,debug},status)
53def 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:App.RunResult<S,K,V,Q,C,R,E,runner,Extra>) -> App.Application<S,K,V,Q,C,R,E,runner,Extra> & B.Status<Q>:
54  match value:
55    case App.RunResult{result,declaration,extra,debug}:resumed(~S,~K,~V,~Q,~C,~R,~E,~runner,~Extra,declaration,extra,debug,result)