Functional Programming and Communicating Processes

Taking the requirements of the Kent operating system project as background, we have sketched a history of some of the methods by which people have sought to represent communicating processes in a functional programming language. It seems to us that the scheme of William Stoye is the first that permits the description of non deterministic behaviour without violating the requirements of referential transparency. We have described our own modifications to the Stoye scheme, permitting static type security in messages, synchronous communication, and separately garbage collected heap spaces.