Concurrent Haskell

Simon Peyton Jones, University of Glasgow

Until recently, functional programmers interested in parallelism have focussed entirely on *implicit* concurrency. However, some applications are most easily expressed in a programming language that supports *explicit* concurrency, notably interactive and distributed systems.

In this talk I will describe an extension to Haskell --- Concurrent Haskell --- that allows it to express explicitly concurrent applications. Concurrent Haskell appears to be both expressive and efficient, and I will give a number of examples of useful abstractions that can be built from Concurrent Haskell's primitives.

An important question is, of course, how to integrate the semantic purity of a functional language with the non-determinism that concurrency necessarily introduces. Do we have to throw the baby out with the bathwater? No, we do not: I will show how to provide a stratified semantics that embodies the usual semantics of purely-functional Haskell as a subset.

Concurrent Haskell is fully implemented, and distributed with the Glasgow Haskell compiler. Its largest single application is the Haggis graphical user interface toolkit, which makes extensive use of concurrency.

.

Last updated by sblp96@dcc.ufmg.br at Fri May 15 1996