Nowhere is it better illustrated than in the Functional Reactive Programming (frp) approach to user interaction. Instead of writing separate handlers for every possible user action, all having access to some shared mutable state, frp treats external events as an infinite list, and applies a series of transformations to it. Conceptually, the list of all our future actions is there, available as the input data to our program. From a program’s perspective there’s no difference between the list of digits of 𝜋, a list of pseudo-random numbers, or a list of mouse positions coming through computer hardware. In each case, if you want to get the 𝑛th item, you have to first go through the first 𝑛 − 1 items. When applied totemporal events, we call this property causality