Both functional and concurrent programming are relatively new paradigms with great promise. In this book, a survey is provided of extensions to Standard ML, one of the most widely used functional languages, with new primitives for concurrent programming. Computer scientists and graduate students will find this a valuable guide to this topic.Both functional and concurrent programming are relatively new paradigms with great promise. In this book, a survey is provided of extensions to Standard ML, one of the most widely used functional languages, with new primitives for concurrent programming. Computer scientists and graduate students will find this a valuable guide to this topic.1 Introduction.- 2 The Essence of Concurrent ML.- 2.1 Introduction.- 2.2 The Fundamental Ideas.- 2.2.1 Abstraction, Choice, and Synchronization.- 2.2.2 Scoping and Mobility.- 2.2.3 Polymorphism.- 2.3 Overview of CML.- 2.4 The Semantics of Mini-CML.- 2.4.1 Syntax.- 2.4.2 Typing Rules.- 2.4.3 Dynamic Semantics.- 2.5 Events and Their Algebra.- 2.6 Expressiveness.- 2.7 Implementing Concurrency Abstractions in CML.- 2.7.1 Buffered Channels.- 2.7.2 Swap Channels.- 2.8 Conclusions and Related Work.- 3 Concurrency in Poly/ML.- 3.1 Introduction.- 3.1.1 Concurrency.- 3.2 The Poly/ML Concurrency Primitives.- 3.2.1 Design Criteria.- 3.2.2 Process Communication.- 3.2.3 Process Creation.- 3.2.4 Interrupts from the Console.- 3.3 The Uniprocessor Implementation.- 3.3.1 Process Creation.- 3.3.2 Communication.- 3.3.3 Input/Output.- 3.4 A Shared Memory Multiprocessor Implementation.- 3.4.1 Threads and Processes.- 3.4.2 Garbage Collection.- 3.5 The Development of a Distributed Implementation.- 3.5.1 Additional Primitives.- 3.5.2 Implementation of a Distributed System.- 3.6 Implementation on LEMMA.- 3.6.1 LEMMA.- 3.6.2 Implementation of Poly/ML on LEMMA.- 3.6.3 Experience with LEMMA.- 4 CCS Programming in an ML Framework: An Account of LCS.- 4.1 Introduction.- 4.1.1 From Process Calculi to Process Languages.- 4.1.l-