The Haskell Ports Library (HPL) entry
FreshPorts entry

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. The paper Distributed Haskell: Goffin on the Internet introduces the predecessor of the port concept implemented in the HPL.

The latest news:

The implementation of HPL is based on Concurrent Haskell.

Current Status

We are in alpha release state. The library is used in the iHaskell wrapper around Gtk+HS - the Haskell binding to the GTK+ GUI toolkit.


You can the latest release from hackage.

Darcs Repository

The library sources are maintained in a darcs repo; get them with

darcs get


Sorry, but the documentation is quite sparse at the moment.

Future Development

The library is currently not actively maintained or developed.


The code is released under the GNU Library General Public Licence (LGPL). This means that you can basically do with it what you want as long as you contribute improvements that you make to the library itself back to the community. However, there are no restrictions whatsoever on programs in which you just use library.

This page is part of Manuel Chakravarty's WWW-stuff.

Last modified: Fri May 14 17:43:52 EST 2004