Modularity 2016
Mon 14 - Thu 17 March 2016 Spain
Tue 15 Mar 2016 09:30 - 10:00 at CROW - CROW Workshop Session 1

Reactive Programming enables declarative definitions of time-varying values (signals) and their dependencies in a way that changes are automatically propagated. In order to use reactive programming in an imperative object-oriented programming language, signals are usually modelled as objects. However, computations on primitive values then have to lifted to signals which usually involves a verbose notation. Moreover, it is important to avoid cycles in the dependency graph and glitches which can both result from changes to mutable global state during change propagation. This paper introduces reactive variables as extension to imperative languages. Changes to reactive variables are automatically propagated to other reactive variables but, in contrast to signals, reactive variables cannot be reified and used as values. Instead, references to reactive variables always denote their latest values. This enables computations without explicit lifting and limits the dependents of a reactive variable to the lexical scope of its declaration. The dependency graph is therefore by definition topologically ordered and acyclic. Additionally, reactive updates are prevented from mutating global state to ensure consistency. We present a working prototype implementation in JavaScript based on the sweet.js macro system and a formalism for integration with general imperative languages.

Tue 15 Mar

CROW-2016-papers
08:30 - 10:00: CROW 2016 - CROW Workshop Session 1 at CROW
CROW-2016-papers145802700000008:30 - 09:00
Day opening
CROW-2016-papers145802880000009:00 - 09:30
Talk
CROW-2016-papers145803060000009:30 - 10:00
Talk