ordinary_reader_system.bend
bendvy-ecs-core@0.1.0.1 · 385 lines · 0 definitions
1import Base
2import bendvy-ecs-core@0.1.0.1/change_tick.bend as Tick
3import bendvy-ecs-core@0.1.0.1/world.bend as W
4import bendvy-ecs-core@0.1.0.1/system.bend as Sys
5import bendvy-ecs-core@0.1.0.1/transaction.bend as Tx
6import bendvy-ecs-core@0.1.0.1/commands.bend as Cmd
7import bendvy-ecs-core@0.1.0.1/capabilities.bend as Cap
8import bendvy-ecs-core@0.1.0.1/reader_parameter.bend as RP
9import bendvy-ecs-core@0.1.0.1/event_notice_runtime.bend as Mixed
10import bendvy-ecs-core@0.1.0.1/event_family_routing.bend as Route
11import bendvy-ecs-core@0.1.0.1/relation_commands.bend as Notice
12import bendvy-ecs-core@0.1.0.1/internal/relation_failures/domains.bend as D
13
14# A registered ordinary callback receives one detached product view while the
15# shared runtime context remains outside the callback transaction.
16type Invocation<Meta:Type,Reader:Type,Parameter:Type,Declaration:Type,Args:Type> is Type:
17 Invocation{meta:Meta,reader:Reader,parameter:Parameter,declaration:Declaration,args:Args,queryCursor:Maybe<&2,Tick.Tick>}
18
19type Completion<Failure:Data,Output:Type> is Type:
20 CallbackCompleted{output:Output}
21 CallbackFailed{error:Failure,output:Output}
22 CallbackInvalidReader{}
23
24type Envelope<Meta:Type,Reader:Type,Parameter:Type,Declaration:Type,Failure:Data,Output:Type> is Type:
25 Envelope{meta:Meta,reader:Reader,parameter:Parameter,declaration:Declaration,completion:Completion<Failure,Output>}
26
27type Provider<Registry:Type,Reader:Type,Parameter:Type,Declaration:Type> is Type:
28 Provider{registry:Registry,reader:Reader,parameter:Parameter,declaration:Declaration}
29
30type Definition<Context:Type,Provider:Type,Parameter:Type,Declaration:Type> is Type:
31 DefinitionRegistered{context:Context,provider:Provider}
32 DefinitionRejected{context:Context,parameter:Parameter,declaration:Declaration}
33 DefinitionDisposalRejected{context:Context,provider:Provider,parameter:Parameter}
34
35type RunResult<Context:Type,Provider:Type,Args:Type,Failure:Data,Output:Type> is Type:
36 RunCompleted{context:Context,provider:Provider,output:Output}
37 RunFailed{context:Context,provider:Provider,error:Failure,output:Output}
38 RunInvalidReader{context:Context,provider:Provider}
39 RunRegistrationRejected{context:Context,provider:Provider,args:Args}
40 RunSkipped{context:Context,provider:Provider}
41
42def outer_succeeded(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,
43 observed:W.World<S,C,R,E> & Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
44 match observed:
45 case (world,envelope):Sys.Succeeded{world,envelope}
46
47def invalid_parts(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,
48 declaration:Declaration,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,reader:Reader,parts:W.World<S,C,R,E> & Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
49 match parts:
50 case (world,meta):Sys.Succeeded{world,Envelope{meta,reader,parameter,declaration,CallbackInvalidReader{}}}
51
52def invalid_reader(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,
53 declaration:Declaration,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,context:Context,reader:Reader) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
54 invalid_parts(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,declaration,parameter,reader,split(context))
55
56def success_succeeded(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,
57 reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,output:Output,parts:W.World<S,C,R,E> & Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
58 match parts:
59 case (world,meta):Sys.Succeeded{world,Envelope{meta,reader,parameter,declaration,CallbackCompleted{output}}}
60
61def success_context(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~after:Context -> Context,
62 parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,output:Output,committed:Context & Reader) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
63 match committed:
64 case (context,reader):success_succeeded(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,reader,parameter,declaration,output,split(after(context)))
65
66def commit_success(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,
67 reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,output:Output,world:W.World<S,C,R,E>,meta:Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
68 success_context(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~after,parameter,declaration,output,RP.commit(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,parameter,join(world,meta),reader,delta,cursor))
69
70def callback_failure(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,
71 reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,error:Failure,output:Output,world:W.World<S,C,R,E>,meta:Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
72 Sys.Succeeded{world,Envelope{meta,reader,parameter,declaration,CallbackFailed{error,output}}}
73
74def inner_outcome(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,
75 reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,meta:Meta,output:Output,outcome:Tx.Outcome<Failure>,world:W.World<S,C,R,E>) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
76 match outcome:
77 case Tx.Success{}:commit_success(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,reader,parameter,declaration,delta,cursor,output,world,meta)
78 case Tx.Failure{error}:callback_failure(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,reader,parameter,declaration,error,output,world,meta)
79
80def transaction_returned(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,
81 reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,meta:Meta,output:Output,finished:Tx.Returned<W.World<S,C,R,E>,Failure>) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
82 match finished:
83 case Tx.Returned{world,outcome}:inner_outcome(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,reader,parameter,declaration,delta,cursor,meta,output,outcome,world)
84
85def callback_returned(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
86 reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,meta:Meta,observed:Tx.Tx<W.World<S,C,R,E>,E> & (Tx.Outcome<Failure> & Output)) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
87 match observed:
88 case (tx,(outcome,output)):transaction_returned(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,reader,parameter,declaration,delta,cursor,meta,output,Cmd.tx_finish(~S,~C,~R,~E,~Failure,tx,outcome))
89
90def invoke_body(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
91 reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,meta:Meta,args:Args,world:W.World<S,C,R,E>,view:View) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
92 callback_returned(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,reader,parameter,declaration,delta,cursor,meta,Cap.invoke_owned(~Ops,~(View & Args),~(Tx.Outcome<Failure> & Output),~body,~Tx.Tx<W.World<S,C,R,E>,E>,~grant,(view,args),Tx.begin(~W.World<S,C,R,E>,~E,world)))
93
94def prepared_split(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
95 reader:Reader,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,delta:Delta,cursor:Tick.Tick,args:Args,view:View,parts:W.World<S,C,R,E> & Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
96 match parts:
97 case (world,meta):invoke_body(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,reader,parameter,declaration,delta,cursor,meta,args,world,view)
98
99def prepared(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
100 parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,+cursor:Tick.Tick,args:Args,observed:Context & (Reader & (View & Delta))) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
101 match observed:
102 case (context,(reader,(view,delta))):prepared_split(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,reader,parameter,declaration,delta,cursor,args,view,split(context))
103
104def prepared_context_clock(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,reader:Reader,queryCursor:Maybe<&2,Tick.Tick>,meta:Meta,clocked:W.World<S,C,R,E> & Tick.Tick) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
105 match clocked:
106 case (world,+attemptCursor):prepared(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,parameter,declaration,attemptCursor,args,RP.prepare(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,parameter,join(world,meta),queryCursor,reader))
107
108def prepared_context_parts(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,reader:Reader,queryCursor:Maybe<&2,Tick.Tick>,parts:W.World<S,C,R,E> & Meta) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
109 match parts:
110 case (world,meta):prepared_context_clock(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,parameter,declaration,args,reader,queryCursor,meta,W.execution_clock(~S,~C,~R,~E,world))
111
112def prepared_context(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,reader:Reader,queryCursor:Maybe<&2,Tick.Tick>,context:Context) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
113 prepared_context_parts(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,parameter,declaration,args,reader,queryCursor,split(context))
114
115def run_validated(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~before:Context -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
116 reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,queryCursor:Maybe<&2,Tick.Tick>,context:Context) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
117 prepared_context(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~after,~Ops,~body,~grant,parameter,declaration,args,reader,queryCursor,before(context))
118
119def validated(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~Declaration:Type,~Failure:Data,~Output:Type,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~before:Context -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
120 +parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,queryCursor:Maybe<&2,Tick.Tick>,observed:Context & (Reader & Bool)) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
121 match observed:
122 case (context,(reader,False{})):invalid_reader(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,declaration,parameter,context,reader)
123 case (context,(reader,True{})):run_validated(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~before,~after,~Ops,~body,~grant,reader,parameter,declaration,args,queryCursor,context)
124
125def runner(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~before:Context -> Context,~after:Context -> Context,~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
126 world:W.World<S,C,R,E>,input:Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>) -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
127 match input:
128 case Invocation{meta,reader,+parameter,declaration,args,queryCursor}:
129 validated(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~validateFn,~prepareFn,~commitFn,~releaseFn,~Declaration,~Failure,~Output,~split,~join,~before,~after,~Ops,~body,~grant,parameter,declaration,args,queryCursor,RP.validate(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,parameter,join(world,meta),reader))
130
131def run_selected(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
132 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
133 world:W.World<S,C,R,E>,meta:Meta,reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args,selected:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn> & Maybe<&2,Tick.Tick>) -> Sys.RunResult<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>:
134 match selected:
135 case (registry,queryCursor):Sys.run(~S,~C,~R,~E,~(Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>),~Empty,~(Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>),~runFn,registry,world,Invocation{meta,reader,parameter,declaration,args,queryCursor})
136
137def run_registered(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
138 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
139 registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,world:W.World<S,C,R,E>,meta:Meta,reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args) -> Sys.RunResult<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>:
140 run_selected(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~runFn,world,meta,reader,parameter,declaration,args,Sys.cursor(~S,~C,~R,~E,~(Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>),~Empty,~(Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>),~runFn,registry))
141
142
143type ProviderDisposal<Context:Type,Provider:Type,Declaration:Type> is Type:
144 ProviderDisposed{context:Context,declaration:Declaration}
145 ProviderDisposalRejected{context:Context,provider:Provider}
146
147def provider_disposal_result(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
148 ~validateFn:Context -> Reader -> Context & (Reader & Bool),
149 ~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),
150 ~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,
151 ~releaseFn:Context -> Reader -> Context,
152 ~join:W.World<S,C,R,E> -> Meta -> Context,
153 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
154 reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,meta:Meta,
155 disposed:Sys.Disposal<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>) -> ProviderDisposal<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Declaration>:
156 match disposed:
157 case Sys.Disposed{world}:ProviderDisposed{RP.release(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,parameter,join(world,meta),reader),declaration}
158 case Sys.DisposalRejected{world,registry}:ProviderDisposalRejected{join(world,meta),Provider{registry,reader,parameter,declaration}}
159
160def provider_dispose_parts(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
161 ~validateFn:Context -> Reader -> Context & (Reader & Bool),
162 ~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),
163 ~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,
164 ~releaseFn:Context -> Reader -> Context,
165 ~join:W.World<S,C,R,E> -> Meta -> Context,
166 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
167 registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,reader:Reader,+parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,
168 parts:W.World<S,C,R,E> & Meta) -> ProviderDisposal<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Declaration>:
169 match parts:
170 case (world,meta):provider_disposal_result(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~join,~runFn,reader,parameter,declaration,meta,Sys.dispose(~S,~C,~R,~E,~(Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>),~Empty,~(Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>),~runFn,registry,world))
171
172def dispose_provider(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
173 ~validateFn:Context -> Reader -> Context & (Reader & Bool),
174 ~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),
175 ~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,
176 ~releaseFn:Context -> Reader -> Context,
177 ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
178 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
179 provider:Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,context:Context) -> ProviderDisposal<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Declaration>:
180 match provider:
181 case Provider{registry,reader,+parameter,declaration}:provider_dispose_parts(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~join,~runFn,registry,reader,parameter,declaration,split(context))
182
183
184
185def definition_cleanup_result(~Context:Type,~Reader:Type,~View:Data,~Delta:Type,~Declaration:Type,~Registry:Type,
186 ~validateFn:Context -> Reader -> Context & (Reader & Bool),
187 ~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),
188 ~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,
189 ~releaseFn:Context -> Reader -> Context,
190 descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,
191 disposed:ProviderDisposal<Context,Provider<Registry,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Declaration>) -> Definition<Context,Provider<Registry,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
192 match disposed:
193 case ProviderDisposed{context,declaration}:DefinitionRejected{context,descriptor,declaration}
194 case ProviderDisposalRejected{context,provider}:DefinitionDisposalRejected{context,provider,descriptor}
195
196def initialized_checked(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
197 ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
198 ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
199 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
200 descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,parameter:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,checked:Context & (Reader & Bool)) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
201 match checked:
202 case (context,(reader,True{})):DefinitionRegistered{context,Provider{registry,reader,parameter,declaration}}
203 case (context,(reader,False{})):
204 definition_cleanup_result(~Context,~Reader,~View,~Delta,~Declaration,~(Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>),~validateFn,~prepareFn,~commitFn,~releaseFn,descriptor,
205 dispose_provider(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runFn,Provider{registry,reader,parameter,declaration},context))
206
207def initialized_values(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
208 ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
209 ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
210 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
211 descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,initialized:Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>)) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
212 match initialized:
213 case (context,(reader,parameter)):initialized_checked(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runFn,descriptor,declaration,registry,parameter,validateFn(context,reader))
214
215def initialized_provider(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
216 ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
217 ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
218 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
219 ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
220 descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,context:Context,registered:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn> & Facts) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runFn>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
221 match registered:
222 case (registry,facts):initialized_values(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runFn,descriptor,declaration,registry,initialize(context,facts))
223
224def registration_result(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
225 ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
226 ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
227 ~runner:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
228 ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> & Facts,
229 ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
230 descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,meta:Meta,
231 result:Sys.RegistrationResult<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
232 match result:
233 case Sys.RegistrationFailed{world}:DefinitionRejected{join(world,meta),descriptor,declaration}
234 case Sys.Registered{world,registry}:initialized_provider(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner,~initialize,descriptor,declaration,join(world,meta),factsFn(registry))
235
236def registered_parts(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
237 ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
238 ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~runner:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
239 ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> & Facts,
240 ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
241 descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,meta:Meta,
242 result:Sys.RegistrationResult<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
243 registration_result(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner,~factsFn,~initialize,descriptor,declaration,meta,result)
244
245def define_world(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
246 ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
247 ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
248 ~runner:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
249 ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> & Facts,
250 ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
251 descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,name:String,access:List<&2,String>,parts:W.World<S,C,R,E> & Meta) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
252 match parts:
253 case (world,meta):registered_parts(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner,~factsFn,~initialize,descriptor,declaration,meta,Sys.register(~S,~C,~R,~E,~(Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>),~Empty,~Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,~runner,world,name,access))
254
255def define_access(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
256 ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
257 ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,
258 ~runner:W.World<S,C,R,E> -> Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>,
259 ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner> & Facts,
260 ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
261 declaration:Declaration,context:Context,name:String,
262 accessed:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn> & List<&2,String>) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
263 match accessed:
264 case (descriptor,access):define_world(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner,~factsFn,~initialize,descriptor,declaration,name,access,split(context))
265
266def define(~S:Data,~C:Type,~R:Type,~E:Data,~Context:Type,~Meta:Type,~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,~Facts:Data,
267 ~validateFn:Context -> Reader -> Context & (Reader & Bool),~prepareFn:Context -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Context & (Reader & (View & Delta)),~commitFn:Context -> Reader -> Delta -> @+cursor:Tick.Tick -> Context & Reader,~releaseFn:Context -> Reader -> Context,
268 ~split:Context -> W.World<S,C,R,E> & Meta,~join:W.World<S,C,R,E> -> Meta -> Context,~before:Context -> Context,~after:Context -> Context,
269 ~Ops:Type -> Type,~body:@-H:Type -> @-caps:Ops(H) -> (View & Args) -> H -> H & (Tx.Outcome<Failure> & Output),~grant:Ops(Tx.Tx<W.World<S,C,R,E>,E>),
270 ~factsFn:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~before,~after,~Ops,~body,~grant)> -> Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~before,~after,~Ops,~body,~grant)> & Facts,
271 ~initialize:Context -> Facts -> Context & (Reader & RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
272 descriptor:RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,context:Context,name:String) -> Definition<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<Meta,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,runner(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~before,~after,~Ops,~body,~grant)>,Reader,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Context,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
273 define_access(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~Facts,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~runner(~S,~C,~R,~E,~Context,~Meta,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~split,~join,~before,~after,~Ops,~body,~grant),~factsFn,~initialize,declaration,context,name,RP.access(~Context,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,descriptor))
274
275# Canonical shared-context hooks are fixed by the library entry. Applications
276# supply only the closed publication router and failure classifier for their
277# declared event schema; split/join and transaction ordering stay internal.
278def mixed_before_attempt(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
279 ~sync:F -> Nat -> List<&2,P> -> F,
280 ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
281 context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>) -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>:
282 Mixed.before_attempt(~S,~C,~R,~P,~F,~H,~sync,~classify,context)
283
284def mixed_after_success(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
285 ~sync:F -> Nat -> List<&2,P> -> F,
286 ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
287 context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>) -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>:
288 Mixed.after_success(~S,~C,~R,~P,~F,~H,~sync,~classify,context)
289
290def shared_runner(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
291 ~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
292 ~validateFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & Bool),
293 ~prepareFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & (View & Delta)),
294 ~commitFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Delta -> @+cursor:Tick.Tick -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & Reader,~releaseFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,
295 ~Ops:Type -> Type,
296 ~body:@-K:Type -> @-caps:Ops(K) -> (View & Args) -> K -> K & (Tx.Outcome<Failure> & Output),
297 ~grant:Ops(Tx.Tx<W.World<S,C,R,Notice.Notice<S,P>>,Notice.Notice<S,P>>),
298 ~sync:F -> Nat -> List<&2,P> -> F,
299 ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
300 world:W.World<S,C,R,Notice.Notice<S,P>>,
301 input:Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>) -> Sys.Outcome<W.World<S,C,R,Notice.Notice<S,P>>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>>:
302 runner(~S,~C,~R,~Notice.Notice<S,P>,~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~(Mixed.State<S,P,F,H> & Nat),~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,
303 ~validateFn,~prepareFn,~commitFn,~releaseFn,~Mixed.split(~S,~C,~R,~P,~F,~H),~Mixed.join(~S,~C,~R,~P,~F,~H),
304 ~mixed_before_attempt(~S,~C,~R,~P,~F,~H,~sync,~classify),
305 ~mixed_after_success(~S,~C,~R,~P,~F,~H,~sync,~classify),~Ops,~body,~grant,world,input)
306
307def define_mixed(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
308 ~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
309 ~validateFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & Bool),
310 ~prepareFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & (View & Delta)),
311 ~commitFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Delta -> @+cursor:Tick.Tick -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & Reader,~releaseFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,
312 ~Ops:Type -> Type,
313 ~body:@-K:Type -> @-caps:Ops(K) -> (View & Args) -> K -> K & (Tx.Outcome<Failure> & Output),
314 ~grant:Ops(Tx.Tx<W.World<S,C,R,Notice.Notice<S,P>>,Notice.Notice<S,P>>),
315 ~sync:F -> Nat -> List<&2,P> -> F,
316 ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
317 ~initialize:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> RP.RegistrationFacts -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),
318 descriptor:RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,
319 declaration:Declaration,context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,name:String) -> Definition<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Provider<Sys.Registry<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>,Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>:
320 define_access(~S,~C,~R,~Notice.Notice<S,P>,~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~(Mixed.State<S,P,F,H> & Nat),~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~RP.RegistrationFacts,~validateFn,~prepareFn,~commitFn,~releaseFn,~Mixed.split(~S,~C,~R,~P,~F,~H),~Mixed.join(~S,~C,~R,~P,~F,~H),~shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify),~RP.registration_facts(~S,~C,~R,~Notice.Notice<S,P>,~Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,~Empty,~Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,~shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)),~initialize,declaration,context,name,RP.access(~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~Reader,~View,~Delta,~validateFn,~prepareFn,~commitFn,~releaseFn,descriptor))
321
322def run_registered_mixed(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
323 ~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
324 ~validateFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & Bool),
325 ~prepareFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & (View & Delta)),
326 ~commitFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Delta -> @+cursor:Tick.Tick -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & Reader,~releaseFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,
327 ~Ops:Type -> Type,
328 ~body:@-K:Type -> @-caps:Ops(K) -> (View & Args) -> K -> K & (Tx.Outcome<Failure> & Output),
329 ~grant:Ops(Tx.Tx<W.World<S,C,R,Notice.Notice<S,P>>,Notice.Notice<S,P>>),
330 ~sync:F -> Nat -> List<&2,P> -> F,
331 ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
332 registry:Sys.Registry<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>,
333 context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,reader:Reader,+parameter:RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,declaration:Declaration,args:Args) -> Sys.RunResult<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>:
334 match context:
335 case Route.Runtime{world,state,tick}:run_registered(~S,~C,~R,~Notice.Notice<S,P>,~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~(Mixed.State<S,P,F,H> & Nat),~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify),registry,world,(state,tick),reader,parameter,declaration,args)
336
337def mixed_envelope_result(~S:Data,~C:Type,~R:Type,~E:Data,~Meta:Type,~Context:Type,~Reader:Type,~Parameter:Type,~Declaration:Type,~Args:Type,~Failure:Data,~Output:Type,
338 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,Parameter,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>,
339 ~join:W.World<S,C,R,E> -> Meta -> Context,
340 registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,world:W.World<S,C,R,E>,envelope:Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>) -> RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>:
341 match envelope:
342 case Envelope{meta,reader,parameter,declaration,completion}:
343 match completion:
344 case CallbackCompleted{output}:RunCompleted{join(world,meta),Provider{registry,reader,parameter,declaration},output}
345 case CallbackFailed{error,output}:RunFailed{join(world,meta),Provider{registry,reader,parameter,declaration},error,output}
346 case CallbackInvalidReader{}:RunInvalidReader{join(world,meta),Provider{registry,reader,parameter,declaration}}
347
348def mixed_outcome_result(~S:Data,~C:Type,~R:Type,~E:Data,~Meta:Type,~Context:Type,~Reader:Type,~Parameter:Type,~Declaration:Type,~Args:Type,~Failure:Data,~Output:Type,
349 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,Parameter,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>,
350 ~join:W.World<S,C,R,E> -> Meta -> Context,
351 registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,outcome:Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>) -> RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>:
352 match outcome:
353 case Sys.Failed{world,error}:Empty.absurd(RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>,error)
354 case Sys.Succeeded{world,output}:mixed_envelope_result(~S,~C,~R,~E,~Meta,~Context,~Reader,~Parameter,~Declaration,~Args,~Failure,~Output,~runFn,~join,registry,world,output)
355
356def mixed_rejected_result(~S:Data,~C:Type,~R:Type,~E:Data,~Meta:Type,~Context:Type,~Reader:Type,~Parameter:Type,~Declaration:Type,~Args:Type,~Failure:Data,~Output:Type,
357 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,Parameter,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>,
358 ~join:W.World<S,C,R,E> -> Meta -> Context,
359 registry:Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,world:W.World<S,C,R,E>,invocation:Invocation<Meta,Reader,Parameter,Declaration,Args>) -> RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>:
360 match invocation:
361 case Invocation{meta,reader,parameter,declaration,args,queryCursor}:RunRegistrationRejected{join(world,meta),Provider{registry,reader,parameter,declaration},args}
362
363def mixed_raw_result(~S:Data,~C:Type,~R:Type,~E:Data,~Meta:Type,~Context:Type,~Reader:Type,~Parameter:Type,~Declaration:Type,~Args:Type,~Failure:Data,~Output:Type,
364 ~runFn:W.World<S,C,R,E> -> Invocation<Meta,Reader,Parameter,Declaration,Args> -> Sys.Outcome<W.World<S,C,R,E>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>>,
365 ~join:W.World<S,C,R,E> -> Meta -> Context,
366 result:Sys.RunResult<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>) -> RunResult<Context,Provider<Sys.Registry<S,C,R,E,Invocation<Meta,Reader,Parameter,Declaration,Args>,Empty,Envelope<Meta,Reader,Parameter,Declaration,Failure,Output>,runFn>,Reader,Parameter,Declaration>,Args,Failure,Output>:
367 match result:
368 case Sys.RegistrationRejected{registry,world,args}:mixed_rejected_result(~S,~C,~R,~E,~Meta,~Context,~Reader,~Parameter,~Declaration,~Args,~Failure,~Output,~runFn,~join,registry,world,args)
369 case Sys.Completed{registry,outcome}:mixed_outcome_result(~S,~C,~R,~E,~Meta,~Context,~Reader,~Parameter,~Declaration,~Args,~Failure,~Output,~runFn,~join,registry,outcome)
370
371def run_mixed(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
372 ~Reader:Type,~View:Data,~Delta:Type,~Args:Type,~Declaration:Type,~Failure:Data,~Output:Type,
373 ~validateFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & Bool),
374 ~prepareFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> @+cursor:Maybe<&2,Tick.Tick> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (Reader & (View & Delta)),
375 ~commitFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Delta -> @+cursor:Tick.Tick -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & Reader,~releaseFn:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> -> Reader -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,
376 ~Ops:Type -> Type,
377 ~body:@-K:Type -> @-caps:Ops(K) -> (View & Args) -> K -> K & (Tx.Outcome<Failure> & Output),
378 ~grant:Ops(Tx.Tx<W.World<S,C,R,Notice.Notice<S,P>>,Notice.Notice<S,P>>),
379 ~sync:F -> Nat -> List<&2,P> -> F,
380 ~classify:Notice.Notice<S,P> -> Maybe<D.DescriptorKey<S>>,
381 provider:Provider<Sys.Registry<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>,Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,
382 context:Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,args:Args) -> RunResult<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Provider<Sys.Registry<S,C,R,Notice.Notice<S,P>,Invocation<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Args>,Empty,Envelope<(Mixed.State<S,P,F,H> & Nat),Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration,Failure,Output>,shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify)>,Reader,RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>,Declaration>,Args,Failure,Output>:
383 match provider:
384 case Provider{registry,reader,+parameter,declaration}:
385 mixed_raw_result(~S,~C,~R,~Notice.Notice<S,P>,~(Mixed.State<S,P,F,H> & Nat),~Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,~Reader,~(RP.Param<Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>>,Reader,View,Delta,validateFn,prepareFn,commitFn,releaseFn>),~Declaration,~Args,~Failure,~Output,~shared_runner(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify),~Mixed.join(~S,~C,~R,~P,~F,~H),run_registered_mixed(~S,~C,~R,~P,~F,~H,~Reader,~View,~Delta,~Args,~Declaration,~Failure,~Output,~validateFn,~prepareFn,~commitFn,~releaseFn,~Ops,~body,~grant,~sync,~classify,registry,context,reader,parameter,declaration,args))