Functional Logic Programming:
Languages and Systems

There are a many proposals for functional logic languages. However, I have listed only those languages where I know an easily accessible implementation (i.e., by the internet). Additional suggestions are welcome.
ALF
ALF is a functional logic language whose operational semantics is based on innermost narrowing with normalization. Its implementation is based on an extension of the WAM.
Contact: Michael Hanus
Babel
BABEL is a functional logic language whose operational semantics is based on lazy narrowing and provides some higher-order features.
Contact: Herbert Kuchen, Juan Jose Moreno Navarro
Ciao
Ciao is a general-purpose programming language which supports logic, constraint, functional, higher-order, and object-oriented programming. Its main design objectives are high expressive power, extensibility, safety, reliability, and efficient execution.
Contact: The Ciao Team
Curry
Curry is a higher-order concurrent functional logic language whose operational semantics combines an optimal lazy narrowing strategy with residuation for concurrent computations. The development of Curry is an international initiative intended to provide a common platform for research, teaching and application of integrated functional logic languages.
Contact: Michael Hanus
Life
Life amalgamates functional, logic and object-oriented programming. The computational domain is based on feature terms. Functional expressions are evaluated by residuation.
Contact: Hassan Aït-Kaci
LPG
LPG is a generic functional logic language. The functions are defined by conditional rewrite rules and the predicates are defined by Horn clauses whose bodies may contain equations, disequations or classical atomic formulae. The current implementation uses an extension of SLD-resolution combined with innermost narrowing.
Contact: Didier Bert, Rachid Echahed
Mercury
Mercury is a logic/functional programming language, which uses a highly optimized execution algorithm based on mode, type and determinism declarations. Mercury supports large-scale program development with modules, separate compilation, and static analysis.
Contact: The Mercury project
NUE-Prolog
NUE-Prolog is a preprocssor for NU-Prolog which translates function definitions into predicates. Since delay declarations are added to the translated predicates, the operational behavior is similar to residuation.
Contact: Lee Naish
Oz
Oz is a concurrent constraint programming language providing higher-order functional programming, constraint logic programming, and concurrent objects. Functions are supported through a special syntax for relations. The operational behavior of function evaluation is similar to residuation.
Contact: Gert Smolka
RELFUN
RELFUN is a logic programming language with eager evaluation of non-deterministic, non-ground functions. It is implemented in Common Lisp.
Contact: Harold Boley
TOY
TOY is a functional logic programming system supporting lazy narrowing, higher-order features (including higher-order logic variables), disequality constraints (for constructed data terms), and non-deterministic functions.
Contact: Paco Lopez Fraguas

Back to Homepage of Functional Logic Programming
Michael Hanus