Curry (program transformation)
E839550
Curry (program transformation) is a program transformation technique in functional programming, named after logician Haskell Curry, that systematically converts higher-order functions into equivalent first-order forms.
Statements (38)
| Predicate | Object |
|---|---|
| instanceOf |
program transformation technique
ⓘ
technique in functional programming ⓘ |
| aimsTo | convert higher-order functions to first-order functions ⓘ |
| appliesTo | higher-order functions ⓘ |
| assumes | source language supports higher-order functions ⓘ |
| basedOn |
ideas from combinatory logic
ⓘ
representation of functions without variables ⓘ |
| benefit |
can improve performance on first-order execution platforms
ⓘ
enables use of first-order model checkers ⓘ enables use of first-order theorem provers ⓘ |
| category | program analysis and transformation ⓘ |
| effect |
reduces need for closures at runtime
ⓘ
removes higher-order values from runtime representation ⓘ |
| field |
functional programming
ⓘ
programming languages ⓘ |
| goal |
facilitate reasoning about programs using first-order techniques
ⓘ
make higher-order programs executable on first-order abstract machines ⓘ |
| influencedBy | work of Haskell Curry on combinatory logic ⓘ |
| input | higher-order program ⓘ |
| namedAfter | Haskell Curry NERFINISHED ⓘ |
| output | first-order program ⓘ |
| preserves |
observable behavior of programs
ⓘ
program semantics ⓘ |
| relatedTo |
closure conversion
ⓘ
defunctionalization ⓘ lambda lifting ⓘ |
| requires | systematic encoding of function spaces ⓘ |
| resultsIn | first-order representations of functions ⓘ |
| targetLanguage | first-order language ⓘ |
| typicalStep |
introducing explicit data structures for function values
ⓘ
replacing function arguments with first-order encodings ⓘ |
| usedFor |
eliminating higher-order functions
ⓘ
enabling first-order optimization techniques ⓘ simplifying program analysis ⓘ |
| usedIn |
compilation of functional languages
ⓘ
implementation of higher-order features ⓘ |
| usedInContext |
compilers for functional languages
ⓘ
formal methods for program verification ⓘ |
Referenced by (1)
Full triples — surface form annotated when it differs from this entity's canonical label.