LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Indeterminate behavior with determinate semantics in parallel programs
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Functional reactive programming from first principles
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
FranTk - a declarative GUI language for Haskell
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Functional reactive programming, continued
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
Functional Implementations of Continuous Modeled Animation
PLILP '98/ALP '98 Proceedings of the 10th International Symposium on Principles of Declarative Programming
ACM SIGGRAPH 2005 Electronic Art and Animation Catalog
Applicative programming with effects
Journal of Functional Programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Combinators for message-passing in Haskell
PADL'11 Proceedings of the 13th international conference on Practical aspects of declarative languages
Sloth - a tool for checking minimal-strictness
PADL'11 Proceedings of the 13th international conference on Practical aspects of declarative languages
EScala: modular event-driven object interactions in scala
Proceedings of the tenth international conference on Aspect-oriented software development
Efficient and compositional higher-order streams
WFLP'10 Proceedings of the 19th international conference on Functional and constraint logic programming
Extending monads with pattern matching
Proceedings of the 4th ACM symposium on Haskell
Keeping calm in the face of change
Higher-Order and Symbolic Computation
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
The environment as an argument: context-aware functional programming
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
Causality for free!: parametricity implies causality for functional reactive programs
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
Asynchronous functional reactive programming for GUIs
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Functional reactive programming with liveness guarantees
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Higher-order functional reactive programming without spacetime leaks
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
A survey on reactive programming
ACM Computing Surveys (CSUR)
Monadic functional reactive programming
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
KScript and KSWorld: a time-aware and mostly declarative language and interactive GUI framework
Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software
Hi-index | 0.00 |
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").