Live coding systems achieve progressive evaluation through external grounding, internal grounding, temporal recursion, or hybrid state management
Progressive evaluation (a Cognitive Dimension) means programmers can see results without restarting. Live coding makes this possible via four strategies: (1) External grounding — no internal state worth preserving (Tidal: only state is the system clock); (2) Internal grounding — state passed explicitly across program versions; (3) Temporal recursion — a function calls itself with a delay, so swapping the function between self-calls continues naturally; (4) Hybrid — pure synthesis graph + dynamic scripting layer (SuperCollider + JITLib). Each strategy has different affordances and failure modes for live performance.
Examples
Tidal: external grounding — patterns are stateless functions. Sorensen’s Impromptu: temporal recursion. SuperCollider + JITLib: hybrid. McLean’s feedback.pl: self-modification — state stored in the source code itself.
Assessment
For each of the four progressive evaluation strategies, identify one live coding environment that uses it and one failure mode the strategy introduces. Which strategy most easily supports ‘picking up where you left off’ after a mistake mid-performance?