The Haskell Ports Library (HPL) supports concurrent and distributed
computing in the IO monad _without_ relying on mutable variables.
Instead, it supplies monotone single-assignment variables and ports
abstractions.

Ports are an abstraction for modelling variables whose values evolve
over time without the need to resort to mutable variable, such as
IORefs. More precisely, a port represents all values that a
time-dependent variable successively takes as a stream, where each
element of the stream corresponds to a state change - we can also say
that a port represents a time series. Moreover, a port supports
concurrent construction of the time series, or stream of values. 

Ports are ideally suited for purely functional GUI interfaces that
completely avoid the use of mutable variables. It is planned to extend
the library to interaction between different processes possibly
located on distinct processing nodes.

Maintainer: Don Stewart <dons@openbsd.org>

WWW: http://www.cse.unsw.edu.au/~chak/haskell/ports/
