© 1997 by British Computer Society
Lazy Functional Programs in a Concurrent Environment
1 Information and Software Technology, Philips Research Laboratories Eindhoven, Prof. Holstlaan 4. PO Box NL-5656 AA Eindhoven, The Netherlands, 2 Department of Mathematics and Computing Science, Eindhoven University of Technology, PO Box 513, NL-5600 MB Eindhoven, The Netherlands, 3 Email: michelr{at}win.tue.nl
The mechanism of Landin-style stream input/output (I/O) makes it possible to write functional programs, which behave as reactive systems when executed with lazy evaluation. Functional programming languages like Gofer are attractive for programming the data transformations of a reactive system. But although the I/O behaviour can be programmed in such languages too, the functional paradigm lacks the capabilities for specification and reasoning which are needed to analyse the communication behaviour of the program and its environment. We propose to use the Algebra of Communicating Processes (ACP
) for that purpose. The present paper attempts to bridge the gap between the functional and the process-oriented worlds. The term rewriting system of the functional language, the operational semantics of the I/O mechanism and the process equations of a program are described and their relationships are analysed. We abstract from the details of the particular programming language by using an intermediate concept of abstract functional program.
Received June 3, 1997. revised November 21, 1997.