Curry (programming language)

This is an old revision of this page, as edited by Plankalkuel (talk | contribs) at 20:53, 15 April 2008. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Curry is an experimental functional logic programming language, based on the Haskell language. It merges elements of functional and logic programming, including constraint programming integration.

Curry
Paradigmfunctional, logic, non-strict, modular
Designed byMichael Hanus, et al
Typing disciplinestatic, strong, inferred
OSportable
WebsiteCurry
Major implementations
PAKCS, mcc

It is nearly a superset of Haskell, lacking support mostly for overloading using type classes, which some implementations provide anyway as a language extension, such as the Münster Curry Compiler.

Foundations of Functional Logic Programming

Basic Concepts

A functional program is a set of functions defined by equations or rules. A functional computation consists of replacing subexpressions by equal (w.r.t. the function definitions) subexpressions until no more replacements (or reductions) are possible and a value or normal form is obtained. For instance, consider the function double defined by

double x = x+x 

Narrowing