skip to main content
10.1145/581690.581695acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article

Functional reactive programming, continued

Published: 03 October 2002 Publication History

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.

References

[1]
G. Berry and G. Gonthier. The Esterel synchronous programming language: design, semantics, implementation. Science of Computer Programming, 19(2):217-248, 1992.]]
[2]
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.]]
[3]
Magnus Carlsson and Thomas Hallgren. Fudgets - Purely Functional Processes with applications to Graphical User Interfaces. PhD thesis, Chalmers University of Technology, March 1998.]]
[4]
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.]]
[5]
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.]]
[6]
Paul Caspi and Marc Pouzet. Lucid Synchrone, a functional extension of Lustre. Submitted for publication, 2000.]]
[7]
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.]]
[8]
Antony Courtney and Conal Elliott. Genuinely functional user interfaces. In 2001 Haskell Workshop, September 2001.]]
[9]
Conal Elliott. Functional implementations of continuous modelled animation. In Proceedings of PLILP/ALP '98. Springer-Verlag, 1998.]]
[10]
Conal Elliott and Paul Hudak. Functional reactive animation. In International Conference on Functional Programming, pages 163-173, June 1997.]]
[11]
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.]]
[12]
N. Halbwachs, P. Caspi, P. Raymond, and D. Pilaud. The synchronous dataflow programming language LUSTRE. Proceedings of the IEEE, 79(9):1305-1320, 1991.]]
[13]
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.]]
[14]
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.]]
[15]
Paul Hudak. The Haskell School of Expression - Learning Functional Programming through Multimedia. Cambridge University Press, Cambridge, UK, 2000.]]
[16]
John Hughes. Generalising monads to arrows. Science of Computer Programming, (37):67-111, 2000.]]
[17]
Modelica - a unified object-oriented language for physical systems modeling: Language specification version 1.4. The Modelica Association, http://www.modelica.org, December 2000.]]
[18]
Ross Paterson. A new notation for arrows. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP 2001), September 2001.]]
[19]
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.]]
[20]
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.]]
[21]
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]]
[22]
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.]]
[23]
Meurig Sage. Frantk: A declarative gui system for haskell. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP 2000), September 2000.]]
[24]
Using Simulink version 4. The MathWorks, Inc., http://www.mathworks.com, June 2001.]]
[25]
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.]]
[26]
Zhanyong Wan, Walid Taha, and Paul Hudak. Real-time FRP. In International Conference on Functional Programming (ICFP '01), 2001.]]
[27]
Zhanyong Wan, Walid Taha, and Paul Hudak. Event-driven FRP. In Practical Aspects of Declarative Languages (PADL '02), January 2002.]]

Cited By

View all
  • (2024)A Virtual Machine for Higher-Order ReactorsCompanion Proceedings of the 8th International Conference on the Art, Science, and Engineering of Programming10.1145/3660829.3660840(52-56)Online publication date: 11-Mar-2024
  • (2024)Switching Mechanism for Update Timing of Time-Varying Values in an FRP Language for Small-Scale Embedded SystemsProceedings of the 2024 13th International Conference on Software and Computer Applications10.1145/3651781.3651789(45-54)Online publication date: 1-Feb-2024
  • (2024)Heterogeneous System Modeling Using Timed- and Untimed-Based Models of Computation: A Case Study for Avionics Systems Domain2024 AIAA DATC/IEEE 43rd Digital Avionics Systems Conference (DASC)10.1109/DASC62030.2024.10749534(1-8)Online publication date: 29-Sep-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

Haskell '02: Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
October 2002
118 pages
ISBN:1581136056
DOI:10.1145/581690
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 03 October 2002

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. FRP
  2. Haskell
  3. domain-specific languages
  4. functional programming
  5. hybrid modeling
  6. synchronous dataflow languages

Qualifiers

  • Article

Conference

HW02
Sponsor:

Acceptance Rates

Haskell '02 Paper Acceptance Rate 9 of 24 submissions, 38%;
Overall Acceptance Rate 57 of 143 submissions, 40%

Upcoming Conference

ICFP '25
ACM SIGPLAN International Conference on Functional Programming
October 12 - 18, 2025
Singapore , Singapore

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)61
  • Downloads (Last 6 weeks)9
Reflects downloads up to 26 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)A Virtual Machine for Higher-Order ReactorsCompanion Proceedings of the 8th International Conference on the Art, Science, and Engineering of Programming10.1145/3660829.3660840(52-56)Online publication date: 11-Mar-2024
  • (2024)Switching Mechanism for Update Timing of Time-Varying Values in an FRP Language for Small-Scale Embedded SystemsProceedings of the 2024 13th International Conference on Software and Computer Applications10.1145/3651781.3651789(45-54)Online publication date: 1-Feb-2024
  • (2024)Heterogeneous System Modeling Using Timed- and Untimed-Based Models of Computation: A Case Study for Avionics Systems Domain2024 AIAA DATC/IEEE 43rd Digital Avionics Systems Conference (DASC)10.1109/DASC62030.2024.10749534(1-8)Online publication date: 29-Sep-2024
  • (2024)GraalSP: Polyglot, efficient, and robust machine learning-based static profilerJournal of Systems and Software10.1016/j.jss.2024.112058213(112058)Online publication date: Jul-2024
  • (2024)Reactamole: functional reactive molecular programmingNatural Computing10.1007/s11047-024-09982-523:3(477-495)Online publication date: 19-Apr-2024
  • (2024)Being Lazy When It CountsFunctional and Logic Programming10.1007/978-981-97-2300-3_11(188-216)Online publication date: 15-May-2024
  • (2023)The Essence of ReactivityProceedings of the 16th ACM SIGPLAN International Haskell Symposium10.1145/3609026.3609727(18-31)Online publication date: 30-Aug-2023
  • (2023)This Is Driving Me Loopy: Efficient Loops in Arrowized Functional Reactive ProgramsProceedings of the 16th ACM SIGPLAN International Haskell Symposium10.1145/3609026.3609726(3-17)Online publication date: 30-Aug-2023
  • (2023)Types that Change: The Extensible Type Design PatternProceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture10.1145/3609025.3609475(49-62)Online publication date: 30-Aug-2023
  • (2023)The Beauty and Elegance of Functional Reactive AnimationProceedings of the 11th ACM SIGPLAN International Workshop on Functional Art, Music, Modelling, and Design10.1145/3609023.3609806(8-20)Online publication date: 30-Aug-2023
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy