Concurrent Monadic InterfacingIan Holyer, Eleni Spiliopoulou, Concurrent Monadic Interfacing. Implementation of Functional Languages, IFL '98, 10th International Workshop, Selected Papers, London, United Kingdom, September 1998. ISBN 3-540-66229-4, pp. 73–89. June 1999. No electronic version available.
This paper presents the Brisk monadic framework, in which the usual monadic style of interfacing is adapted to accommodate a deterministic form of concurrency. Its main innovation is that it allows actions on state components. This is a key issue which enables state splitting, a technique which assigns to each new thread a part of the state, a substate, to act upon. Distinct concurrent threads are restricted to access disjoint substates. A purely functional prototype implementation is presented to demonstrate these ideas. The resulting system acts as a basis for offering a purely functional form of concurrency, extending the expressiveness of functional languages without spoiling the semantics by introducing non-determinism. Such an extended monadic framework offers two additional advantages. It provides a modularised approach to state types, where each state type and primitive operations can be defined in its own module. Furthermore, it improves some existing language features by making them deterministic, e.g. reading characters lazily from a file without unexpected effects. We also provide a lazy version of the standard Haskell function writeFile for writing characters lazily to a file.