GUM: a portable parallel implementation of Haskell
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A practical subtyping system for Erlang
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
ERLANG for Concurrent Programming
ERLANG for Concurrent Programming
Distributed Programming in a Multi-Paradigm Declarative Language
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Eden - The Paradise of Functional Concurrent Programming
Euro-Par '96 Proceedings of the Second International Euro-Par Conference on Parallel Processing - Volume I
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
The Design and Implementation of Glasgow Distributed Haskell
IFL '00 Selected Papers from the 12th International Workshop on Implementation of Functional Languages
Concurrent Execution Semantics of DAML-S with Subtypes
ISWC '02 Proceedings of the First International Semantic Web Conference on The Semantic Web
Concurrent Semantics for the Web Services Specification Language DAML-S
COORDINATION '02 Proceedings of the 5th International Conference on Coordination Models and Languages
The Design and Implementation of Glasgow Distributed Haskell
IFL '00 Selected Papers from the 12th International Workshop on Implementation of Functional Languages
A high-level implementation of composable memory transactions in concurrent haskell
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
Hi-index | 0.00 |
We present an extension of the lazy functional programming language Haskell for distributed programming. For the communication between processes we add a port concept. Ports behave like channels in Concurrent Haskell except that only the process which creates a port can read from it. Ports can also be sent through other ports. The receiver can then also write messages through the received port. This is independent of the location in a network. The programmer uses the same functions to write to local or remote ports. Communication between concurrent and distributed processes is programmed with the same functions. Concurrent processes can easily be distributed, for example to provide scalability of a system. In many distributed applications it is necessary that two independently started programs can connect at runtime. Therefore we provide the registration of ports. Other processes can look them up from anywhere in a network. The implementation consists of a library which provides functions for creating new processes, communication between concurrent and distributed processes, and error handling with exceptions.