Curry


A Truly Integrated

Functional Logic Language

Curry is a universal programming language aiming to amalgamate the most important declarative programming paradigms, namely functional programming and logic programming. Moreover, it also covers the most important operational principles developed in the area of integrated functional logic languages: "residuation" and "narrowing" (you find here a survey on functional logic programming).

Curry combines in a seamless way features from functional programming (nested expressions, higher-order functions, lazy evaluation), logic programming (logical variables, partial data structures, built-in search), and concurrent programming (concurrent evaluation of expressions with synchronization on logical variables). Moreover, Curry provides additional features in comparison to the pure languages (compared to functional programming: search, computing with partial information; compared to logic programming: more efficient evaluation due to the deterministic and demand-driven evaluation of functions).

The development of Curry is an international initiative intended to provide a common platform for the research, teaching and application of integrated functional logic languages. The design of Curry is mainly discussed in the Curry mailing list. A detailed draft report describing the language is available here. To get an idea of Curry, you may have a look into the short list of Curry's features or a tutorial on Curry.

Report Report on the language Curry
Tutorial Tutorial on Curry
Papers Papers related to Curry
Mailing list Mailing list for discussions on Curry
PAKCS PAKCS: the Portland Aachen Kiel Curry System with an interactive WWW interface
Implementations Implementations of Curry
Examples Example programs
Applications Applications of Curry
Patterns Functional Logic Design Patterns
FlatCurry FlatCurry: An intermediate representation for Curry programs
CIDER CIDER: A graphical programming and development environment for Curry


Michael Hanus