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.
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.
ok pvalchev@