Smoothly Navigating between Functional Reactive Programming and Actors
Abstract
We formally define an elegant multi-paradigm unification of Functional Reactive Programming, Actor Systems, and Object-Oriented Programming. This enables an intuitive form of declarative programming, harvesting the power of concurrency while maintaining safety. We use object and reference capabilities to highlight and tame imperative features: reference capabilities track aliasing and mutability, and object capabilities track I/O. Formally, our type system limits the scope, impact and interactions of impure code. - Scope: Expressions whose input is pure will behave deterministically. - Impact: Data-races and synchronisation issues are avoided. The only way for an actor to behave nondeterministically, is by mutating its state based on message delivery order. - Interactions: Signals provide a functional boundary between imperative and functional code, preventing impure code from invalidating functional assumptions.
- Publication:
-
arXiv e-prints
- Pub Date:
- August 2020
- DOI:
- 10.48550/arXiv.2008.12592
- arXiv:
- arXiv:2008.12592
- Bibcode:
- 2020arXiv200812592W
- Keywords:
-
- Computer Science - Programming Languages
- E-Print:
- Part of WFLP 2020 pre-proceedings (updated post-comments)