Push-pull functional reactive programming

72Citations
Citations of this article
205Readers
Mendeley users who have this article in their library.
Get full text

Abstract

Functional reactive programming (FRP) has simple and powerful semantics, but has resisted efficient implementation. In particular, most past implementations have used demand-driven sampling, which accommodates FRP's continuous time semantics and fits well with the nature of functional programming. Consequently, values are wastefully recomputed even when inputs don't change, and reaction latency can be as high as the sampling period. This paper presents a way to implement FRP that combines data- and demand-driven evaluation, in which values are recomputed only when necessary, and reactions are nearly instantaneous. The implementation is rooted in a new simple formulation of FRP and its semantics and so is easy to understand and reason about. On the road to a new implementation, we'll meet some old friends (monoids, functors, applicative functors, monads, morphisms, and improving values) and make some new friends (functional future values, reactive normal form, and concurrent "unambiguous choice"). Copyright © 2009 ACM.

Cite

CITATION STYLE

APA

Elliott, C. (2009). Push-pull functional reactive programming. In Haskell’09 - Proceedings of the 2009 ACM SIGPLAN Haskell Symposium (pp. 25–36). https://doi.org/10.1145/1596638.1596643

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free