We present an extension of the lazy functional programming language Haskell for distributed programming. This extension is motivated by the untyped eager functional language Erlang, which is successfully used in the development of distributed systems. The communication between processes is based on asynchronous message passing and a comfortable access to the received messages with pattern matching. Communication between concurrent and distributed processes is programmed with the same functions, which makes it easy to implement distributed systems.
The implementation consists of a library, which extends the IO monad by a state for the mailbox of a process and its process identifier. Furthermore it provides functions for generating new processes and communication between concurrent and distributed processes. The second part of the implementation is a preprocessor, which translates the extended syntax of Distributed Haskell into pure Haskell using the library.