Sign up & Download
Sign in

Push-pull functional reactive programming

by Conal M. Elliott
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell - Haskell '09 ()

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").

Cite this document (BETA)

Readership Statistics

79 Readers on Mendeley
by Discipline
 
 
 
by Academic Status
 
24% Other Professional
 
22% Ph.D. Student
 
19% Student (Master)
by Country
 
15% United States
 
5% United Kingdom
 
4% Canada

Sign up today - FREE

Mendeley saves you time finding and organizing research. Learn more

  • All your research in one place
  • Add and import papers easily
  • Access it anywhere, anytime

Start using Mendeley in seconds!

Already have an account? Sign in