Abstract
We present a new interface for practical Functional Reactive Programming (FRP) that (1) is close in spirit to the original FRP ideas, (2) does not have the original space-leak problems, without using arrows or advanced types, and (3) provides a simple and expressive way for performing IO actions from FRP code. We also provide a denotational semantics for this new interface, and a technique (using Kripke logical relations) for reasoning about which FRP functions may "forget their past", i.e. which functions do not have an inherent space-leak. Finally, we show how we have implemented this interface as a Haskell library called FRPNow.
- Heinrich Apfelmus. Reactive banana. Available at: hackage.haskell.org/package/reactive-banana.Google Scholar
- Gérard Berry and Georges Gonthier. The esterel synchronous programming language: Design, semantics, implementation. Science of computer programming, 19(2):87–152, 1992. Google Scholar
Digital Library
- P. Caspi, D. Pilaud, N. Halbwachs, and J. A. Plaice. Lustre: A declarative language for real-time programming. In Principles of Programming Languages (POPL), pages 178–188, 1987. Google Scholar
Digital Library
- Jean-Louis Colac¸o, Alain Girault, Grégoire Hamon, and Marc Pouzet. Towards a Higher-order Synchronous Data-flow Language. In Conference on Embedded Software, 2004. Google Scholar
Digital Library
- Antony Courtney and Conal Elliott. Genuinely functional user interfaces. In Haskell Workshop, 2001.Google Scholar
- Evan Czaplicki and Stephen Chong. Asynchronous functional reactive programming for GUIs. In PLDI, pages 411–422, 2013. Google Scholar
Digital Library
- Conal Elliott. Push-pull functional reactive programming. In Haskell Symposium, pages 25–36, 2009. Google Scholar
Digital Library
- Conal Elliott and Paul Hudak. Functional reactive animation. In International Conference on Functional Programming (ICFP), 1997. Google Scholar
Digital Library
- Wolfgang Jeltsch. Signals, not generators! Trends in Functional Programming, pages 145–160, 2009.Google Scholar
- Simon Peyton Jones. Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell. In Engineering theories of software construction, 2001.Google Scholar
- Neelakantan R Krishnaswami. Higher-order functional reactive programming without spacetime leaks. In International Conference on Functional Programming (ICFP), 2013. Google Scholar
Digital Library
- John Launchbury and Simon L. Peyton Jones. Lazy functional state threads. In Programming Language Design and Implementation (PLDI), pages 24–35, 1994. Google Scholar
Digital Library
- Simon Marlow, Ryan Newton, and Simon Peyton Jones. A monad for deterministic parallelism. In Haskell Symposium, pages 71–82, 2011. Google Scholar
Digital Library
- Conor Mcbride and Ross Paterson. Applicative programming with effects. J. Funct. Program., 18(1):1–13, January 2008. Google Scholar
Digital Library
- Henrik Nilsson, Antony Courtney, and John Peterson. Functional reactive programming, continued. In Haskell Workshop, 2002. Google Scholar
Digital Library
- Gergely Patai. Efficient and compositional higher-order streams. In Functional and Constraint Logic Programming (WFLP). 2011. Google Scholar
Digital Library
- John Peterson, Paul Hudak, and Conal Elliott. Lambda in motion: Controlling robots with haskell. In Practical Aspects of‘ Declarative Languages (PADL), 1999. Google Scholar
Digital Library
- Simon L. Peyton Jones, Simon Marlow, and Conal Elliott. Stretching the storage manager: Weak pointers and stable names in haskell. In Implementation of Functional Languages (IFL), pages 37–58, 2000. Google Scholar
Digital Library
- Marc Pouzet. Lucid Synchrone, version 3. Tutorial and reference manual. Université Paris-Sud, LRI, April 2006. Available at www.lri.fr/∼pouzet/lucid-synchrone.Google Scholar
- Atze van der Ploeg. Monadic functional reactive programming. In Haskell Symposium, pages 117–128, 2013. Google Scholar
Digital Library
- Daniel Winograd-Cort, Hai Liu, and Paul Hudak. Virtualizing realworld objects in FRP. In Practical Aspects of Declarative Languages (PADL), pages 227–241. 2012. Google Scholar
Digital Library
Index Terms
Practical principled FRP: forget the past, change the future, FRPNow!
Recommendations
Practical principled FRP: forget the past, change the future, FRPNow!
ICFP 2015: Proceedings of the 20th ACM SIGPLAN International Conference on Functional ProgrammingWe present a new interface for practical Functional Reactive Programming (FRP) that (1) is close in spirit to the original FRP ideas, (2) does not have the original space-leak problems, without using arrows or advanced types, and (3) provides a simple ...
Higher-order functional reactive programming without spacetime leaks
ICFP '13Functional reactive programming (FRP) is an elegant approach to declaratively specify reactive systems. However, the powerful abstractions of FRP have historically made it difficult to predict and control the resource usage of programs written in this ...
Higher-order functional reactive programming without spacetime leaks
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingFunctional reactive programming (FRP) is an elegant approach to declaratively specify reactive systems. However, the powerful abstractions of FRP have historically made it difficult to predict and control the resource usage of programs written in this ...






Comments