Published online by Cambridge University Press: 07 July 2009
The execution model of Prolog, the first popular language based on Horn Clauses, was designed for efficient evaluation on von Neumann architectures. An alternative process model of execution, better suited for parallel evaluation and reactive programming, has given rise to a new class of languages based on Horn Clause logic, concurrent logic languages. There appears to be a profusion of languages which claim to fall into this class and it is difficult for an initiate to appreciate why each is the way it is. One notable member of this class, FGHC, forms the cornerstone of the Japanese 5th Generation Initiative. Fortunately, the seemingly exponential growth in these languages is only an illusion. A finite number of synchronization mechanisms arise from attempting (or sometimes not attempting) to control two principle synchronization difficulties: the premature binding problem and the binding conflict problem. Suitable combinations of these synchronization mechanisms reproduce the languages of this family. A background knowledge of Prolog is assumed and some familiarity with the difficulties encountered in concurrency would be advantageous.