Live-coding pattern languages are composable: any two transformations combine into a new one without extending the language
McLean explains that TidalCycles rarely needs new functions because you can make a new transformation just by combining two existing ones — the language is composable. This has two consequences: the primitive vocabulary stays small, and adding one genuinely new function ‘freshens up’ every other function because it now composes with all of them (an N-function gain, not +1). This is why very short code produces great complexity: simple, fundamentally simple parts combined in layered ways yield emergent, intricate results — the same interference-pattern idea McLean draws from weaving.
Examples
rev (reverse) and jux (one-channel) compose into jux(rev) — a stereo forward/backward effect that neither does alone, with no new function defined. Chaining iter with a patterned parameter yields evolving rotations for free.
Assessment
Explain why adding one new transformation to a composable language increases expressive power by more than one function. Give an example of two existing Tidal/Strudel functions combined into a behaviour neither produces alone.