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 ( mh@informatik.uni-kiel.de)

Babel
BABEL is a functional logic language whose operational semantics is based on lazy narrowing and provides some higher-order features.
Contact: Herbert Kuchen ( kuchen@uni-muenster.de), Juan Jose Moreno Navarro ( jjmoreno@fi.upm.es)

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 ( mh@informatik.uni-kiel.de)

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 ( hak@cs.sfu.ca)

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 (bert@imag.fr), Rachid Echahed (echahed@imag.fr)

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 ( lee@cs.mu.oz.au)

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 ( smolka@dfki-uni-sb.de)

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 ( boley@informatik.uni-kl.de)

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 ( fraguas@sip.ucm.es)


Back to Homepage of Functional Logic Programming
Next to Mailing list
Michael Hanus