Department of Computing Science, University of Glasgow
user correction - Legacy Corrections
Certain classes of applications are naturally described as a network of cooperating components, where each component reacts to input as and when it becomes available. This paper builds on previous work on expressing I/O and state-based algorithms safely in a functional language, and presents a new way of expressing reactive systems in a functional language that does not violate vital semantic properties. The approach taken is a pragmatic one in that it integrates constructs for expressing reactive systems within existing framework for writing I/O bound, statebased programs functionally. The original contributions of this paper are twofold; first, we show how the existing monadic IO model can be extended to cope with nondeterminism, and secondly, we introduce primitives for evaluating I/O actions concurrently. 1 Introduction A large class of applications are naturally described as a collection of components cooperating to solve some task. Examples include operating systems and graphica...