15-312 Foundations of Programming Languages
Lecture 25: Concurrent ML

In this lecture we apply the ideas and principles of the pi-calculus to extend ML with concurrency primitives. We illustrate the design and type system of Concurrent ML (CML) with various examples or concurrent programs. Concurrency is achieved by spawning simple threads. While the thread actually share memory, the programming style of CML is message passing.

The basis for CML is synchronous communication as in the pi-calculus. The basic abstractions are channels carrying arbitrary values (type 'a channel) corresponding to names, and and events that can be synchronized on (type 'a event) corresponding to sums. A good reference for CML is the book below.

Concurrent Programming in ML.
John H. Reppy.
Cambridge University Press, 1999.

[ Home | Schedule | Assignments | Software | Resources ]

Frank Pfenning