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.