Many programs have an inherently reactive nature imposed by the functional dependencies between their data and external events. Classically, these dependencies are dealt with using callbacks. Reactive programming with first-class reactive values is a paradigm that aims to encode callback logic in declarative statements. Reactive values concisely define dependencies between singular data elements, but cannot efficiently express dependencies in larger datasets. Orthogonally, embedding reactive values in a shared-memory concurrency model convolutes their semantics and requires synchronization. This paper presents a generic framework for reactive programming that extends first-class reactive values with the concept of lazy  reactive containers , backed by several concrete implementations. Our framework addresses concurrency by introducing  reactive isolates . We show examples that our programming model is efficient and convenient to use.
['Aleksandar Prokopec', 'Philipp Haller', 'Martin Odersky']
Containers and aggregates, mutators and isolates for reactive programming