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