GistTree.Com
Entertainment at it's peak. The news is by your side.

A Truly Integrated Functional Logic Programming Language

0

Curry Logo

A In actuality Constructed-in Practical Good judgment Programming Language

-- Returns the closing ingredient of a list.
closing ::  [a] -> a
closing (_ ++ [x]) = x

-- Returns some permutation of a list.
perm ::  [a] -> [a]
perm []     = []
perm (x: xs) = insert (perm xs)
 where insert ys     = x :  ys
       insert (y: ys) = y :  insert ys

Curry is a declarative multi-paradigm programming language
which combines in a seamless formulation capabilities from
purposeful programming
(nested expressions, greater-negate capabilities, stable typing, lazy evaluation)
and logic programming
(non-determinism, built-in search, free variables, partial files buildings).
When put next with the single programming paradigms, Curry affords
extra capabilities, savor optimal evaluation for logic-oriented
computations and versatile, non-deterministic pattern matching
with user-outlined capabilities.

Purely Declarative

Curry is named a declarative language, on yarn of computed outcomes are honest of the time and negate of evaluation, which simplifies reasoning on programs. Facet outcomes can even be modeled as “IO” operations, i.e., a declarative description of what to enact. Operations are constructed by expressions most effective, there are no statements or instructions, and each binding to a variable is immutable.

Type Inference

Curry is strongly typed however form annotations of capabilities need no longer be written by the programmer: they’re robotically inferred by the compiler the utilization of a form inference algorithm. However, it’s a appropriate model to write down the styles of capabilities in negate to give a minimal of a minimal documentation of the intended utilize of capabilities.

Non-Determinism

Curry helps non-deterministic operations which can return diversified values for the identical input. Non-deterministic operations enhance a programming model comparable to that of logic programming whereas keeping some advantages of purposeful programs corresponding to expression nesting and lazy (ask-pushed) evaluation.

Free Variables

Free variables denote “unknown” values. They are instantiated (i.e., changed by some concrete values) so that the instantiated expression is evaluable. REPLs of Curry systems expose bindings (i.e., instantiations) of the free variables of the important thing expression it has computed to prefer into yarn an expression.

The intention of Curry is a world
initiative intended to give a well-liked platform for the research, teaching and application of integrated
purposeful logic languages. The make of Curry is largely mentioned in the Curry mailing list. A close fable
describing the language is moreover on hand. To procure a theory of Curry, you would possibly perchance presumably moreover be pleased a behold into the rapid list of
Curry’s capabilities or an academic on Curry.

Compilers

Several implementations of Curry are on hand and/or under pattern. The most prominent representatives are the Portland Aachen Kiel Curry Intention (PAKCS), the present model of the Kiel Curry Intention (KiCS2), and the Münster Curry Compiler (MCC).

Package Manager

The Curry Package Manager (CPM) is a instrument to distribute and install Curry libraries and capabilities and arrange model dependencies between them. These libraries are organized in programs. There would possibly perchance be a central index of all these programs which can easily be downloaded by CPM.

CurryDoc

CurryDoc is a instrument that generates the documentation for a Curry program in HTML (and optionally moreover LaTeX) layout. The generated HTML pages be pleased files about all files kinds and operations exported by a module as properly as links between the diversified entities.

Curr(y)gle API Search

Curr(y)gle is a Curry API search engine which permits you to run looking out the Curry libraries listed by CPM. Which you would possibly perchance moreover search by names of both operations, files kinds, and modules. It used to be designed following the example dilemma by Haskell’s search engine Hoogle.

Read More

Leave A Reply

Your email address will not be published.