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.
KeywordsFile Content Expressive Power Output Channel Input Stream Functional Programming
Unable to display preview. Download preview PDF.
- F.W. Burton, “Nondeterminism with referential transparency in functional programming”, Proc. 1st international Lisp conference, 1980.Google Scholar
- M. Carlsson & T. Hallgren, “Fudgets: a graphical user interface in a lazy functional language”, submitted to FPCA, 1993.Google Scholar
- W. Clinger, “Nondeterministic call by need is neither lazy nor by name”, Proc. Symposium on LISP and Functional Programming, 1982.Google Scholar
- P. Hudak et. al., “Report on the programming language Haskell”, ACM SIGPLAN Notices Volume 27 Number 5, 1992Google Scholar
- S.L. Peyton Jones & C. Clack & J. Salkild, “High-performance parallel graph reduction”, Proc. Parallel Architectures and Languages Europe, Lecture Notes in Computer Science 365, Springer Verlag, 1989Google Scholar
- D. Harrison, “RUTH: a functional language for real-time programming”, Proc. Parallel Architectures and Languages Europe, Lecture Notes in Computer Science 259, Springer-Verlag, 1987Google Scholar
- D. Harrison & S.B. Jones, “The Semantics of Implicit Time Determinate Choice”, in W. Joosen & E. Milgrom (editors), Parallel Computing: From Theory to Sound Practice, IOS Press, 1992Google Scholar
- P. Henderson, “Purely functional operating systems”, in J. Darlington, P. Henderson, D.A. Turner (editors) “Functional Programming and its Applications”, Cambridge University Press, 1982.Google Scholar
- J. Hughes & J. O’Donnell, “Nondeterministic Functional Programming with Sets”, Proceedings of the 1990 Banf Conference on Higher Order Reasoning, 1990.Google Scholar
- The MIT X Window System Manual Set (Volumes 1 and 2), IXI Ltd.Google Scholar
- W. Stoye, “A new scheme for writing functional operating systems”, Technical report 56, Cambridge University Computer Laboratory, 1984.Google Scholar
- D. Turner, “Functional programming and communicating processes” LNCS 259, 1987.Google Scholar