🤖 AI Summary
This paper addresses the excessive complexity and over-restrictiveness of modal type systems in Functional Reactive Programming (FRP) languages. To reconcile semantic rigor with practical usability, we propose a novel design centered on a restructured signal semantics: signals are modeled as controlled, mutable references strictly governed by the “later” modality. This approach preserves essential runtime properties—causality, productivity, and absence of space leaks—while substantially simplifying the modal type system. The resulting design significantly reduces type constraints and increases coverage of well-typed, legitimate programs; moreover, it enables efficient in-place updates, thereby reconciling functional purity with execution efficiency. Our primary contribution is the first deep integration of controlled mutability with the “later” modality, achieving a unified balance among expressiveness, safety, and performance in FRP.
📝 Abstract
Functional reactive programming (FRP) is a declarative programming paradigm for implementing reactive programs at a high level of abstraction. It applies functional programming principles to construct and manipulate time-varying values, also known as signals. However, for this programming paradigm to work in practice, an FRP language must ensure that programs are causal, productive, and free from space leaks. Over the past fifteen years, several modal type systems to enforce these operational properties have been developed.
We present a new FRP language with a significantly simplified modal type system that imposes fewer restrictions than previous modal FRP languages while still guaranteeing the central operational properties of causality, productivity, and absence of space leaks. The key enabling idea is to alter the semantics of signals so that the type system can safely allow more programs to type-check, which also makes the language more expressive. With this new semantics, signals are modelled as mutable references whose mutability is tightly controlled by the 'later' type modality. This disciplined form of mutability also enables more efficient in-place updates of signals, all while preserving a functional programming style.