Distributed Programming in a Multi-Paradigm Declarative Language

by Michael Hanus

Proc. of the International Conference on Principles and Practice of Declarative Programming (PPDP'99), Springer LNCS 1702, pp. 188-205, 1999
© Springer-Verlag
I suggest to read this version rather than the version in the proceedings since the latter has been reformatted (without asking me) in a bad style!

Curry is a multi-paradigm declarative language covering functional, logic, and concurrent programming paradigms. Curry's operational semantics is based on lazy reduction of expressions extended by a possibly non-deterministic binding of free variables occurring in expressions. Moreover, constraints can be executed concurrently which provides for concurrent computation threads that are synchronized on logical variables. In this paper, we extend Curry's basic computational model by a few primitives to support distributed applications where a dynamically changing number of different program units must be coordinated. We develop these primitives as a special case of the existing basic model so that the new primitives interact smoothly with the existing features for search and concurrent computations. Moreover, programs with local concurrency can be easily transformed into distributed applications. This supports a simple development of distributed systems that are executable on local networks as well as on the Internet. In particular, sending partially instantiated messages containing logical variables is quite useful to implement reply messages. We demonstrate the power of these primitives by various programming examples.

Preprint (PDF) BibTeX-Entry Online