Chapter 13. Functional Reactive Programming
Functional Reactive Programming (FRP) is an elegant way to express behaviors that change over time, such as user interfaces or animation. From a theoretical point of view, behaviors are time-varying values. Using simple behaviors as building blocks, we can build increasingly complex behaviors: complete programs, UIs, games, and so on. Behaviors compose very well and eliminate lots of tedious and error-prone work that's present in the traditional imperative approach with actions and callbacks.
Though FRP has simple semantics, efficient implementation is largely an open question. Existing FRP implementations take different approaches with different trade-offs. In semantics, FRP is continuous, in other words, functions of the real numbers. In practice, we are forced to make approximations, either via sampling, using discrete semantics or some hybrid of continuous and discrete. The more theoretically minded reader is encouraged to glance...