execution_owner_continuation.bend
bendvy-ecs-core@0.1.0.3 · 23 lines · 6 definitions
1import Base
2
3
4
5
6
7type Header<-Input:Type,-Output:Type> is Type:
8 Header{-Held:Type,held:Held,resume:Held -> Input -> Output}
9def returned(-Input:Type,-Output:Type,header:Header<Input,Output>,value:Input) -> Output:
10 match header:
11 case Header{Held,held,resume}:resume(held,value)
12def decided(-Output:Type,header:Header<(Bool & Bool),Output>,valid:Bool,compatible:Bool) -> Output:
13 returned(Bool & Bool,Output,header,(valid,compatible))
14
15
16
17type PairedHeader<-Input:Type,-Output:Type> is Type:
18 PairedHeader{-Held:Type,held:Held,resume:(Held & Input) -> Output}
19def paired_returned(-Input:Type,-Output:Type,header:PairedHeader<Input,Output>,value:Input) -> Output:
20 match header:
21 case PairedHeader{Held,held,resume}:resume((held,value))
22def pure_paired(-Output:Type,header:PairedHeader<Unit,Output>) -> IO(Output):
23 R => k => k(paired_returned(Unit,Output,header,Unit{}))