Parallel Functional Reactive Programming

In this paper, we demonstrate how Functional Reactive Programming (FRP), a framework for the description of interactive systems, can be extended to encompass parallel systems. FRP is based on Haskell, a purely functional programming language, and incorporates the concepts of time variation and reactivity. Parallel FRP serves as a declarative system model that may be transformed into a parallel implementation using the standard program transformation techniques of functional programming. The semantics of parallel FRP include non-determinism, enhancing opportunities to introduce parallelism. We demonstrate a variety of program transformations based on parallel FRP and show how a FRP model may be transformed into explicitly parallel code. Parallel FRP is implemented using the Linda programming system to handle the underlying parallelism. As an example of parallel FRP, we show how a specification for a web-based online auctioning system can be transformed into a parallel implementation.

[1]  Satoshi Matsuoka,et al.  Using tuple space communication in distributed object-oriented languages , 1988, OOPSLA 1988.

[2]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[3]  David Gelernter,et al.  The Linda® Alternative to Message-Passing Systems , 1994, Parallel Comput..

[4]  Marco Danelutto,et al.  ANCLETO: a template-based P3L compiler , 1997 .

[5]  Simon L. Peyton Jones,et al.  Concurrent Haskell , 1996, POPL '96.

[6]  Paul Hudak,et al.  Lambda in Motion: Controlling Robots with Haskell , 1999, PADL.

[7]  John H. Reppy,et al.  CML: A Higher-Order Concurrent Language , 1991, PLDI.

[8]  Rita Loogen,et al.  From (Sequential) Haskell to (Parallel) Eden: An Implementation Point of View , 1998, PLILP/ALP.

[9]  Satoshi Matsuoka,et al.  Using tuple space communication in distributed object-oriented languages , 1988, OOPSLA '88.

[10]  Conal Elliott,et al.  An Embedded Modeling Language Approach to Interactive 3D and Multimedia Animation , 1999, IEEE Trans. Software Eng..

[11]  Paul Hudak,et al.  Prototyping real-time vision systems: an experiment in DSL design , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[12]  Marco Danelutto,et al.  Parallel Functional Programming with Skeletons: the OCamlP3L experiment , 1998 .

[13]  Paul Hudak,et al.  Functional reactive animation , 1997, ICFP '97.

[14]  John H. Reppy,et al.  CML: A higher concurrent language , 1991, PLDI '91.

[15]  Ralf Hinze,et al.  Haskell 98 — A Non−strict‚ Purely Functional Language , 1999 .

[16]  Conal Elliott COMPOSING REACTIVE ANIMATIONS , 1998 .