Asynchronous Modal FRP

03/06/2023
by   Patrick Bahr, et al.
0

Over the past decade, a number of languages for functional reactive programming (FRP) have been suggested, which use modal types to ensure properties like causality, productivity and lack of space leaks. So far, almost all of these languages have included a modal operator for delay on a global clock. For some applications, however, the notion of global clock is unnatural and leads to leaky abstractions as well as inefficient implementations. While modal languages without a global clock have been proposed, no operational properties have been proved about them, yet. This paper proposes Async RaTT, a new modal language for asynchronous FRP, equipped with an operational semantics mapping complete programs to machines that take asynchronous input signals and produce output signals. The main novelty of Async RaTT is a new modality for asynchronous delay, allowing each output channel to be associated at runtime with the set of input channels it depends on, thus causing the machine to only compute new output when necessary. We prove a series of operational properties including causality, productivity and lack of space leaks. We also show that, although the set of input channels associated with an output channel can change during execution, upper bounds on these can be determined statically by the type system.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/14/2019

Simply RaTT: A Fitch-style Modal Calculus for Reactive Programming without Space Leaks

Functional reactive programming (FRP) is a paradigm for programming with...
research
03/14/2019

Simply RaTT: A Fitch-style Modal Calculus for Reactive Programming

Functional reactive programming (FRP) is a paradigm for programming with...
research
03/06/2020

Diamonds are not forever: Liveness in reactive programming with guarded recursion

When designing languages for functional reactive programming (FRP) the m...
research
04/24/2018

Guarded Computational Type Theory

Nakano's later modality can be used to specify and define recursive func...
research
03/15/2023

Quantitative Global Memory

We show that recent approaches of static analysis based on quantitative ...
research
11/23/2020

The Bloom Clock for Causality Testing

Testing for causality between events in distributed executions is a fund...

Please sign up or login with your details

Forgot password? Click here to reset