A Survey of Functional Reactive Programming: Concepts, Implementations, Optimizations, and Applications
📜 Abstract
Functional Reactive Programming (FRP) provides a conceptual framework for implementing reactive systems. It is a relatively recent model of programming, but has already been explored, implemented, and optimized in several useful ways. We survey the literature on FRP, its implementation, optimization, and uses, and present ideas for further research, along with some examples.
✨ Summary
The paper surveys Functional Reactive Programming as a declarative approach to modeling time-varying behavior and responses to external events in functional languages. It distinguishes three semantic approaches: Classic FRP, which treats behaviors and events as first-class values; signal-function FRP, which composes reactive input/output transformers; and N-ary FRP, which uses typed signal vectors to distinguish collections of signals and events. It reviews implementation strategies, including continuation-based evaluation, event-driven dataflow graphs, and reactive normal forms, and discusses optimization techniques such as GADT-based dynamic optimization, Causal Commutative Arrows, lowering, and push-pull evaluation. Examples demonstrate applications to robotics, arcade games, and modular sound synthesis. The paper identifies unresolved problems involving predictable real-time performance, latency guarantees, safe termination, continuous re-evaluation of absent events, dynamic optimization, and richer type-level representations.
Later publications cite the work as background in surveys of real-time functional languages and compilers, educational work on Haskell and software architecture, and research on functional-reactive web applications. (doi.org) These references indicate that the paper served primarily as a compact literature survey and teaching or background resource; the search did not establish a direct industrial adoption attributable specifically to this paper.