On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
The ESTEREL synchronous programming language: design, semantics, implementation
Science of Computer Programming
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Domain specific embedded compilers
Proceedings of the 2nd conference on Domain-specific languages
Functional reactive programming, continued
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Frappé: Functional Reactive Programming in Java
PADL '01 Proceedings of the Third International Symposium on Practical Aspects of Declarative Languages
Self-adjusting computation
Push-pull functional reactive programming
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
A universal modular ACTOR formalism for artificial intelligence
IJCAI'73 Proceedings of the 3rd international joint conference on Artificial intelligence
Flapjax: a programming language for Ajax applications
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Ultrametric Semantics of Reactive Programs
LICS '11 Proceedings of the 2011 IEEE 26th Annual Symposium on Logic in Computer Science
Embedding dynamic dataflow in a call-by-value language
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Causality for free!: parametricity implies causality for functional reactive programs
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Hi-index | 0.00 |
Functional Reactive Programming (FRP) is an approach to the development of reactive systems which provides a pure functional interface, but which may be implemented as an abstraction of an imperative event-driven layer. FRP systems typically provide a model of behaviours (total time-indexed values, implemented as pull systems) and event sources (partial time-indexed values, implemented as push systems). In this paper, we investigate a type system for event-driven FRP programs which provide liveness guarantees, that is every input event is guaranteed to generate an output event. We show that FRP can be implemented on top of a model of sets and relations, and that the isomorphism between event sources and behaviours corresponds to the isomorphism between relations and set-valued functions. We then implement sets and relations using a model of continuations using the usual double-negation CPS transform. The implementation of behaviours as pull systems based on futures, and of event sources as push systems based on the observer pattern, thus arises from first principles. We also discuss a Java implementation of the FRP model.