Deterministic Concurrency

Abstract

Existing functional languages appear not to be suitable for implementing systems which are inherently concurrent, such as operating system environments or reactive systems. Adaptations to functional languages developed to support such applications have in the past always involved the introduction of non-determinism. This paper proposes an adaptation of a functional language which provides concurrency without the introduction of non-determinism or timing information, and indeed without any alteration to the usual semantics, thus retaining the purely declarative nature of functional programming.

The expressiveness of this deterministic form of concurrency is explored by presenting and discussing outlines of designs for a file manager, a window system and a process communication mechanism. Taken together, these demonstrate the feasibility of a deterministic design for a complete single-user concurrent working environment.