Curry (programmeertaal)
Curry | ||||
---|---|---|---|---|
![]() | ||||
Paradigma | functioneel programmeren, constraint programming, logisch programmeren | |||
Verschenen | 1995 | |||
Huidige versie | 3.6.0[1] ![]() | |||
Typesysteem | type-inferentie, sterk typesysteem, statisch typesysteem | |||
Implementaties | PAKCS Münster Curry Compiler | |||
Beïnvloed door | Haskell, Prolog | |||
Licentie | BSD-licentie van 3 clausules | |||
Website | https://www.curry-language.org/ | |||
|
Curry is een functionele en logische programmeertaal die gebaseerd is op de syntaxis van de functionele programmeertaal Haskell. Curry bevat door deze combinatie kenmerken van functionele talen, zoals luie evaluatie en hogere-ordefuncties, en van logische talen, zoals logische variabelen. De taal is vernoemd naar de Amerikaanse wiskundige en logicus Haskell Brooks Curry.
Er zijn verscheidene implementaties van Curry, zoals PAKCS (Portland Aachen Kiel Curry System) en de Münster Curry Compiler.
Overzicht
Het is in Curry mogelijk om, net zoals in Prolog, gebruik te maken van logische variabelen, met aanvankelijk een onbekende waarde, waarvan de waarde berekend kan worden. Tijdens het uitvoeren van het programma wordt gezocht naar mogelijke waarden van de variabelen om vervolgens de expressie te evalueren. In het volgende voorbeeld worden twee vrije variabelen, x
en y
, gebruikt:
x && (y || (not x)) where x,y free
De taal instantieert concrete waarden voor x
en y
en berekent vervolgens de waarde van de expressie:
x = True
eny = True
(resultaat:True
)x = True
eny = False
(resultaat:False
)x = False
eny = y
(resultaat:False
)
De laatste regel geeft aan dat de variabele y
geen waarde heeft gekregen: indien x = False
dan maakt de waarde van y
niet uit voor de waarde van de expressie.
Externe links
- (en) Curry tutorial en overzicht
- (en) Münster Curry Compiler
- (en) CIDER, IDE voor Curry
- (en) Overzicht van implementaties van Curry