ABSTRACT
Functional 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 language with hybrid modeling capabilities, combining advanced synchronous dataflow features with the higher-order lazy functional abstractions of Haskell. In this paper, we describe the AFRP programming style and our Haskell-based implementation. Of particular interest are the AFRP combinators that support dynamic collections and continuation-based switching. We show how these combinators can be used to express systems with an evolving structure that are difficult to model in more traditional dataflow languages.
- G. Berry and G. Gonthier. The Esterel synchronous programming language: design, semantics, implementation. Science of Computer Programming, 19(2):217-248, 1992.]] Google ScholarDigital Library
- Gérard Berry. The foundations of Esterel. In G. Plotkin, C. Stirling, and M. Tofte, editors, Language and Interaction: Essays in Honour of Robin Milner, Foundations of Computing Series. MIT Press, 2000.]] Google ScholarDigital Library
- Magnus Carlsson and Thomas Hallgren. Fudgets - Purely Functional Processes with applications to Graphical User Interfaces. PhD thesis, Chalmers University of Technology, March 1998.]]Google Scholar
- P. Caspi, D. Pilaud, N. Halbwachs, and J. A. Plaice. LUSTRE: A declarative language for programming synchronous systems. In Proceedings of the 14th ACM Symposium on Principles of Programming Languages, New York, NY, 1987. ACM.]] Google ScholarDigital Library
- Paul Caspi and Marc Pouzet. A co-iterative characterization of synchronous stream functions. In Coalgebraic Methods in Computer Science (CMCS '98), Electronic Notes in Theoretical Computer Science, March 1998.]]Google ScholarDigital Library
- Paul Caspi and Marc Pouzet. Lucid Synchrone, a functional extension of Lustre. Submitted for publication, 2000.]]Google Scholar
- Franois E. Cellier. Object-oriented modelling: Means for dealing with system complexity. In Proceedings of the 15th Benelux Meeting on Systems and Control, Mierlo, The Netherlands, pages 53-64, 1996.]]Google Scholar
- Antony Courtney and Conal Elliott. Genuinely functional user interfaces. In 2001 Haskell Workshop, September 2001.]]Google Scholar
- Conal Elliott. Functional implementations of continuous modelled animation. In Proceedings of PLILP/ALP '98. Springer-Verlag, 1998.]] Google ScholarDigital Library
- Conal Elliott and Paul Hudak. Functional reactive animation. In International Conference on Functional Programming, pages 163-173, June 1997.]] Google ScholarDigital Library
- T. Gautier, P. le Guernic, and L. Besnard. SIGNAL: A declarative language for synchronous programming of real-time systems. In G. Kahn, editor, Functional Programming Languages and Computer Architecture, pages 257-277. Springer-Verlag, Berlin, DE, 1987. Lecture Notes in Computer Science 274; Proceedings of Conference held at Portland, OR.]] Google ScholarDigital Library
- N. Halbwachs, P. Caspi, P. Raymond, and D. Pilaud. The synchronous dataflow programming language LUSTRE. Proceedings of the IEEE, 79(9):1305-1320, 1991.]]Google ScholarCross Ref
- Grégoire Hamon and Marc Pouzet. Modular resetting of synchronous data-flow programs. In Principles and Practice of Declarative Programming (PPDP '00), Montreal, Canada, September 2000.]] Google ScholarDigital Library
- Thomas A. Henzinger. The theory of hybrid automata. In Proceedings of the 11th Annual IEEE Symposium on Logics in Computer Science (LICS 1996), pages 278-292, 1996.]] Google ScholarDigital Library
- Paul Hudak. The Haskell School of Expression - Learning Functional Programming through Multimedia. Cambridge University Press, Cambridge, UK, 2000.]] Google ScholarDigital Library
- John Hughes. Generalising monads to arrows. Science of Computer Programming, (37):67-111, 2000.]] Google ScholarDigital Library
- Modelica - a unified object-oriented language for physical systems modeling: Language specification version 1.4. The Modelica Association, http://www.modelica.org, December 2000.]]Google Scholar
- Ross Paterson. A new notation for arrows. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP 2001), September 2001.]] Google ScholarDigital Library
- Izzet Pembeci, Henrik Nilsson, and Greogory Hager. Functional reactive robotics: An exercise in principled integration of domain-specific languages. In Principles and Practice of Declarative Programming (PPDP '02), October 2002.]] Google ScholarDigital Library
- John Peterson, Paul Hudak, and Conal Elliott. Lambda in motion: Controlling robots with haskell. In Fist International Workshop on Practical Aspects of Declarative Languages (PADL), January 1999.]] Google ScholarDigital Library
- John Peterson, Paul Hudak, Alastair Reid, and Greg Hager. FVision: A declarative language for visual tracking. In Proceedings of PADL '01: 3rd International Workshop on Practical Aspects of Declarative Languages, pages 304-321, January 2001. http://haskell.org/frp/publication.html#fvision]] Google ScholarDigital Library
- Marc Pouzet, Paul Caspi, Pascal Couq, and Grégoire Hamon. Lucid Synchrone v2.0 - tutorial and reference manual. http://www-spi.lip6.fr/lucid-synchrone/lucid_synchrone_2.0_manual.ps, April 2001.]]Google Scholar
- Meurig Sage. Frantk: A declarative gui system for haskell. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP 2000), September 2000.]] Google ScholarDigital Library
- Using Simulink version 4. The MathWorks, Inc., http://www.mathworks.com, June 2001.]]Google Scholar
- Zhanyong Wan and Paul Hudak. Functional Reactive Programming from first principles. In Proc. ACM SIGPLAN '00 Conference on Programming Language Design and Implementation (PLDI '00), 2000.]] Google ScholarDigital Library
- Zhanyong Wan, Walid Taha, and Paul Hudak. Real-time FRP. In International Conference on Functional Programming (ICFP '01), 2001.]] Google ScholarDigital Library
- Zhanyong Wan, Walid Taha, and Paul Hudak. Event-driven FRP. In Practical Aspects of Declarative Languages (PADL '02), January 2002.]] Google ScholarDigital Library
Recommendations
Dynamic optimization for functional reactive programming using generalized algebraic data types
Proceedings of the tenth ACM SIGPLAN international conference on Functional programmingA limited form of dependent types, called Generalized Algebraic Data Types (GADTs), has recently been added to the list of Haskell extensions supported by the Glasgow Haskell Compiler. Despite not being full-fledged dependent types, GADTs still offer ...
Dynamic optimization for functional reactive programming using generalized algebraic data types
ICFP '05: Proceedings of the tenth ACM SIGPLAN international conference on Functional programmingA limited form of dependent types, called Generalized Algebraic Data Types (GADTs), has recently been added to the list of Haskell extensions supported by the Glasgow Haskell Compiler. Despite not being full-fledged dependent types, GADTs still offer ...
Functional automatic differentiation with dirac impulses
ICFP '03: Proceedings of the eighth ACM SIGPLAN international conference on Functional programmingFunctional Reactive Programming (FRP) is a framework for reactive programming in a functional setting. FRP has been applied to a number of domains, such as graphical animation, graphical user interfaces, robotics, and computer vision. Recently, we have ...
Comments