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

Functional reactive programming, continued

Published:03 October 2002Publication 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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Magnus Carlsson and Thomas Hallgren. Fudgets - Purely Functional Processes with applications to Graphical User Interfaces. PhD thesis, Chalmers University of Technology, March 1998.]]Google ScholarGoogle Scholar
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Paul Caspi and Marc Pouzet. Lucid Synchrone, a functional extension of Lustre. Submitted for publication, 2000.]]Google ScholarGoogle Scholar
  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.]]Google ScholarGoogle Scholar
  8. Antony Courtney and Conal Elliott. Genuinely functional user interfaces. In 2001 Haskell Workshop, September 2001.]]Google ScholarGoogle Scholar
  9. Conal Elliott. Functional implementations of continuous modelled animation. In Proceedings of PLILP/ALP '98. Springer-Verlag, 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Conal Elliott and Paul Hudak. Functional reactive animation. In International Conference on Functional Programming, pages 163-173, June 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]]Google ScholarGoogle ScholarCross RefCross Ref
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Paul Hudak. The Haskell School of Expression - Learning Functional Programming through Multimedia. Cambridge University Press, Cambridge, UK, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. John Hughes. Generalising monads to arrows. Science of Computer Programming, (37):67-111, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]]Google ScholarGoogle Scholar
  18. Ross Paterson. A new notation for arrows. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP 2001), September 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]]Google ScholarGoogle Scholar
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Using Simulink version 4. The MathWorks, Inc., http://www.mathworks.com, June 2001.]]Google ScholarGoogle Scholar
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Zhanyong Wan, Walid Taha, and Paul Hudak. Real-time FRP. In International Conference on Functional Programming (ICFP '01), 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Zhanyong Wan, Walid Taha, and Paul Hudak. Event-driven FRP. In Practical Aspects of Declarative Languages (PADL '02), January 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Conferences
    Haskell '02: Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
    October 2002
    118 pages
    ISBN:1581136056
    DOI:10.1145/581690

    Copyright © 2002 ACM

    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]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 3 October 2002

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • Article

    Acceptance Rates

    Haskell '02 Paper Acceptance Rate9of24submissions,38%Overall Acceptance Rate57of143submissions,40%

    Upcoming Conference

    ICFP '24

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader