Since the development of Curry is an international initiative by various research groups, several implementations are available and/or under development. Some of them are listed below.
The Münster Curry compiler is a mature native code compiler for
Curry which conforms to the Curry report except for committed
choice which is not supported. Since release 0.9.5 there are no
longer any restrictions to the encapsulated search. Supported
extension to the Curry language include disequality constraints,
recursive pattern bindings, and IO exceptions. A distinctive
feature of the Münster Curry compiler is the integration of a
declarative debugger of wrong answers. An interactive Curry
environment and a make-like build tool for Curry are included
in the distribution. Besides the Gnu C compiler no other
software is needed to compile and run Curry programs with
the Münster Curry compiler.
Papers describing this implementation can be found
here.
Contact:
Wolfgang Lux
(wlux@uni-muenster.de)
PAKCS is a prototypical implementation of Curry jointly developed by the Portland State University, the Aachen University of Technology, and the University of Kiel. It has a common front-end and three different back-ends described below:
There exists also an interactive WWW interface to some of these
components so that you can try smaller programs without downloading
the complete system.
Contact:
Michael Hanus
(
mh@informatik.uni-kiel.de)
The Curry2Prolog compiler system is an interactive system
to develop Curry programs. It has a simple user interface
and some useful debugging features. Moreover, it also contains
constraint solvers for arithmetic and finite domain constraints,
an implementation of ports for concurrent
and distributed applications (which is described
here),
a library for implementing graphical user interfaces
(which is described
here),
a library for programming dynamic web pages
(which is described
here),
among other libraries for application programming
(e.g., XML processing, meta-programming, sets, system access).
There exists also an
interactive WWW interface
to this compiler.
Contact:
Michael Hanus
(
mh@informatik.uni-kiel.de)
The FLVM is a virtual machine for functional logic computations.
Curry programs are compiled into FLVM instructions
that are executed by the FLVM interpreter that is implemented in Java.
A feature of the
FLVM is the implementation of a fair (i.e., operationally complete)
execution of nondeterministic computations and sharing
of deterministic computations over nondeterministic branches.
Contact:
Sergio Antoy
(antoy@cs.pdx.edu)
The Sloth system is a compiler which translates Curry programs
into Prolog programs. It is under development at the
Technical University of Madrid.
The Sloth system has an interactive interface
to load programs, evaluate expressions etc.
Contact:
Julio Mariño
(
julio.marino@fi.upm.es)
The Zinc Compiler is an experimental compiler for an
extended version of Curry and based on the
Münster Curry Compiler (MCC).
Type classes are the most notably extension at the moment.
The Zinc project is being developed at the
University of Oviedo
by Diego Berrueta.
Contact:
Diego Berrueta (diego AT berrueta DOT net)
Below are some older implementations of Curry that are no longer actively maintained.