Imperative streams—a monadic combinator library for synchronous programming

The paper presents a generalization of Haskell's IO monad suitable for synchronous concurrent programming. The new monad integrates the deterministic concurrency paradigm of synchronous programming with the powerful abstraction features of functional languages and with full support for imperative programming. For event-driven applications, it offers an alternative to the use of existing, thread-based concurrency extensions of functional languages. The concepts presented have been applied in practice in a framework for programming interactive graphics.

[1]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

[2]  David Turner,et al.  Functional Programming and Communicating Processes , 1987, PARLE.

[3]  Nicolas Halbwachs,et al.  LUSTRE: a declarative language for real-time programming , 1987, POPL '87.

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

[5]  William Stoye Message-Based Functional Operating Systems , 1986, Sci. Comput. Program..

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

[7]  Paul Le Guernic,et al.  SIGNAL: A declarative language for synchronous programming of real-time systems , 1987, FPCA.

[8]  Enno Scholz A framework for programming interactive graphics in a functional programming language , 1998 .

[9]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

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

[11]  William W. Wadge,et al.  Lucid, the dataflow programming language , 1985 .

[12]  Corporate,et al.  PEXlib reference manual , 1992 .

[13]  Enno Scholz PIDGETS - Unifying Pictures and Widgets in a Constraint-Based Framework for Concurrent Functional GUI Programming , 1996, PLILP.

[14]  Robert de Simone,et al.  The SL Synchronous Language , 1996, IEEE Trans. Software Eng..

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

[16]  Wolfgang Grieskamp,et al.  Communicating Functional Agents and Their Application to Graphical User Interfaces , 1996, Ershov Memorial Conference.

[17]  Enno Scholz Four Concurrency Primitives for Haskell , 1995 .

[18]  Eugenio Moggi,et al.  Computational lambda-calculus and monads , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[19]  A. F. Sinclair,et al.  Functional Programming and Operating Systems , 1989, Comput. J..

[20]  Peter Henderson,et al.  Purely Functional Operating Systems , 1982 .