ABSTRACT
Functional Reactive Programming (FRP) has come to mean many things. Yet, scratch the surface of the multitude of realisations, and there is great commonality between them. This paper investigates this commonality, turning it into a mathematically coherent and practical FRP realisation that allows us to express the functionality of many existing FRP systems and beyond by providing a minimal FRP core parameterised on a monad. We give proofs for our theoretical claims and we have verified the practical side by benchmarking a set of existing, non-trivial Yampa applications running on top of our new system with very good results.
- Reification of time in FRP. http://pchiusano.blogspot.co.uk/ 2010/07/reification-of-time-in-frp-is.html.Google Scholar
- Haskanoid. github.com/ivanperez-keera/haskanoid.Google Scholar
- Magic Cookies! https://play.google.com/store/apps/ details?id=uk.co.keera.games.magiccookies.Google Scholar
- Pipes. https://hackage.haskell.org/package/pipes.Google Scholar
- E. Bainomugisha, A. L. Carreton, T. v. Cutsem, S. Mostinckx, and W. d. Meuter. A survey on reactive programming. ACM Computing Surveys (CSUR), 45(4):52, 2013. Google ScholarDigital Library
- M. Bärenz, I. Perez, and H. Nilsson. Mathematical Properties of Monadic Stream Functions. http://cs.nott.ac.uk/~ixp/ papers/msfmathprops.pdf, 2016.Google Scholar
- K. Claessen and J. Hughes. QuickCheck: a lightweight tool for random testing of Haskell programs. ACM Sigplan Notices, 46:53– 64, 2011. Google ScholarDigital Library
- A. Courtney and C. Elliott. Genuinely Functional User Interfaces. In Haskell Workshop, pages 41–69, Sept. 2001.Google Scholar
- A. Courtney, H. Nilsson, and J. Peterson. The Yampa arcade. In Haskell Workshop, pages 7–18, 2003. Google ScholarDigital Library
- C. Elliott and P. Hudak. Functional Reactive Animation. In ACM SIGPLAN Notices, volume 32(8), pages 263–273, 1997. Google ScholarDigital Library
- J. Gibbons and G. Hutton. Proof Methods for Corecursive Programs. Fundamenta Informaticae Special Issue on Program Transformation, 66(4):353–366, April-May 2005. Google ScholarDigital Library
- J. Hughes. Generalising monads to arrows. Science of Computer Programming, 37(1):67 – 111, 2000. Google ScholarDigital Library
- J. Hughes. Programming with Arrows. In V. Vene and T. Uustalu, editors, 5th International School on Advanced Functional Programming, volume 3622, pages 73–129, 2005. Google ScholarDigital Library
- O. Kiselyov. Iteratees. In Functional and Logic Programming: 11th International Symposium, FLOPS 2012, pages 166–181, 2012. Google ScholarDigital Library
- S. Liang, P. Hudak, and M. Jones. Monad transformers and modular interpreters. In Symposium on Principles of programming languages, pages 333–343, 1995. Google ScholarDigital Library
- H. Liu, E. Cheng, and P. Hudak. Causal commutative arrows and their optimization. In ACM Sigplan Notices, volume 44, pages 35–46, 2009. Google ScholarDigital Library
- H. Nilsson. Dynamic Optimization for FRP using Generalized Algebraic Data Types. International Conference on Functional Programming, pages 54–65, 2005. Google ScholarDigital Library
- H. Nilsson, A. Courtney, and J. Peterson. Functional reactive programming, continued. In Haskell Workshop, pages 51–64, 2002. Google ScholarDigital Library
- G. Patai. Efficient and compositional higher-order streams. In Functional and Constraint Logic Programming, pages 137–154. 2010. Google ScholarDigital Library
- R. Paterson. A new notation for arrows. In International Conference on Functional Programming, pages 229–240, Sept. 2001. Google ScholarDigital Library
- I. Perez and H. Nilsson. Bridging the GUI Gap with Reactive Values and Relations. In Haskell Symposium, pages 47–58, 2015. Google ScholarDigital Library
- K. C. Rovers. Functional model-based design of embedded systems with UniTi. PhD thesis, 2011.Google ScholarCross Ref
- N. Sculthorpe. Towards Safe and Efficient Functional Reactive Programming. PhD thesis, School of Computer Science, University of Nottingham, July 2011.Google Scholar
- A. van der Ploeg. Monadic Functional Reactive Programming. In Haskell Symposium, pages 117–128, 2013. Google ScholarDigital Library
- Z. Wan and P. Hudak. Functional Reactive Programming from First Principles. In ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 242–252, 2000. Google ScholarDigital Library
- D. Winograd-Cort and P. Hudak. Wormholes: Introducing Effects to FRP. In Haskell Symposium, 2012. Google ScholarDigital Library
Index Terms
- Functional reactive programming, refactored
Recommendations
Functional reactive programming, refactored
Haskell '16Functional Reactive Programming (FRP) has come to mean many things. Yet, scratch the surface of the multitude of realisations, and there is great commonality between them. This paper investigates this commonality, turning it into a mathematically ...
Fault tolerant functional reactive programming (functional pearl)
Highly critical application domains, like medicine and aerospace, require the use of strict design, implementation and validation techniques. Functional languages have been used in these domains to develop synchronous dataflow programming languages for ...
Functional reactive programming, continued
Haskell '02: Proceedings of the 2002 ACM SIGPLAN workshop on HaskellFunctional Reactive Programming (FRP) extends a host programming language with a notion of time flow. Arrowized FRP (AFRP) is a version of FRP embedded in Haskell based on the arrow combinators. AFRP is a powerful synchronous dataflow programming ...
Comments