[I2 logo] [RWTH logo] MOVES: Software Modeling and Verification
(Informatik 2)
Computer Science / RWTH / I2 / Research / DistributedHaskell

Distributed Haskell

Distributed Haskell is an extension of Haskell for distributed programming. It is based on Concurrent Haskell, which is an extension of the Glasgow Haskell Compiler.

We introduce a new abstract datatype Port, which can be used similarly to channels in Concurrent Haskell, but communication via ports is not restricted to one Haskell program. Ports can also easily be used for the communication between processes in a network, without changing the program code. The main difference to channels is the fact, that only the process which created a port can read from it. We do not allow multiple readers. But for the programming of distributed systems this is no real restriction.

For the programming of open systems we enable the global registration of ports and their lookup from remote processes.

Stream-based approach (Volker Stolz and Frank Huch)

New research lead to a stream based extension of Port-based Distributed Haskell. Instead of the restriction to only one reader we abstract from the explicit readPort statement. This restriction had to be enforced during runtime on every access to a port. Furthermore, this would lead to runtime errors instead of compiletime errors. Streams are lists of messages received on a port, so basic list manipulations can now be applied to communication in a distributed environment.

You can read the IFL 2001 paper about the Implementation of Port-based Distributed Haskell.

Port-based Distributed Haskell requires ghc-4.08.2 or better, we even support ghc[i]5!

A source archive is available here. You will need the additional network module, too.

Frank Huch, Volker Stolz

See also:

Valid HTML 4.01 Strict! Valid CSS!