A note on the programming-language-theory framing of Temporal — for a reader who writes Python/Go/Java daily but has not had to think about delimited continuations or effect handlers as language features.
In a PL-theory context an effect is anything a function does besides return a value: read or write a variable, throw an exception, do I/O, sleep, log, fork. A pure function (input → output, no effect) is the easy case. Languages add effects in different ways: Java has unchecked I/O and checked exceptions; Python has implicit I/O and raise; Go has panic/recover and channels. Effects are how programs actually do anything useful.
The interesting question for PL designers is: can you make effects first-class — values that the language can pass around, intercept, replace? Most mainstream languages do this for one effect (exceptions, via try/catch) and not for the rest.
