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:
ThreadIDhas been dropped.
The implementation of HPL is based on Concurrent Haskell.
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.
The library sources are maintained in a darcs repo; get them with
darcs get http://www.cse.unsw.edu.au/~chak/repos/ports/
Sorry, but the documentation is quite sparse at the moment.
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