Matches in DBpedia 2016-04 for { <http://wikidata.dbpedia.org/resource/Q5251733> ?p ?o }
Showing triples 1 to 28 of
28
with 100 triples per page.
- Q5251733 subject Q8543362.
- Q5251733 abstract "In programming languages, defunctionalization refers to a compile-time transformation which eliminates higher-order functions, replacing them by a single first-order apply function. The technique was first described by John C. Reynolds in his 1972 paper, "Definitional Interpreters for Higher-Order Programming Languages". Reynolds' observation was that a given program contains only finitely many function abstractions, so that each can be assigned (and replaced by) a unique identifier. Every function application within the program is then replaced by a call to the apply function with the function identifier as the first argument. The apply function's only job is to dispatch on this first argument, and then perform the instructions denoted by the function identifier on the remaining arguments.One complication to this basic idea is that function abstractions may reference escaping variables. In such situations, defunctionalization must be preceded by closure conversion (lambda lifting), so that any free variables of a function abstraction are passed as extra arguments to apply. In addition, if closures are supported as first-class values, it becomes necessary to represent these captured bindings by creating data structures.Instead of having a single apply function dispatch on all function abstractions in a program, various kinds of control flow analysis (including simple distinctions based on arity or type signature) can be employed to determine which function(s) may be called at each function application site, and a specialized apply function may be referenced instead. Alternately, the target language may support indirect calls through function pointers, which may be more efficient and extensible than a dispatch-based approach.Besides its use as a compilation technique for higher-order functional languages, defunctionalization has been studied (particularly by Olivier Danvy and collaborators) as a way of mechanically transforming interpreters into abstract machines. Defunctionalization is also related to the technique from object-oriented programming of representing functions by function objects (as an alternative to closures).".
- Q5251733 wikiPageExternalLink HOSC-11-4-pp363-397.pdf.
- Q5251733 wikiPageExternalLink Defunctionalization_%28Programming_Languages%29.
- Q5251733 wikiPageExternalLink BRICS-RS-01-23.pdf.
- Q5251733 wikiPageExternalLink BRICS-RS-07-7.pdf.
- Q5251733 wikiPageExternalLink 22_danvy-nielsen_ppdp-2001.pdf.
- Q5251733 wikiPageWikiLink Q1315869.
- Q5251733 wikiPageWikiLink Q1319434.
- Q5251733 wikiPageWikiLink Q1474542.
- Q5251733 wikiPageWikiLink Q183065.
- Q5251733 wikiPageWikiLink Q193076.
- Q5251733 wikiPageWikiLink Q2072111.
- Q5251733 wikiPageWikiLink Q2348963.
- Q5251733 wikiPageWikiLink Q2736305.
- Q5251733 wikiPageWikiLink Q303462.
- Q5251733 wikiPageWikiLink Q333707.
- Q5251733 wikiPageWikiLink Q3350958.
- Q5251733 wikiPageWikiLink Q3719620.
- Q5251733 wikiPageWikiLink Q4008398.
- Q5251733 wikiPageWikiLink Q535335.
- Q5251733 wikiPageWikiLink Q6481164.
- Q5251733 wikiPageWikiLink Q787114.
- Q5251733 wikiPageWikiLink Q79872.
- Q5251733 wikiPageWikiLink Q8543362.
- Q5251733 wikiPageWikiLink Q9143.
- Q5251733 comment "In programming languages, defunctionalization refers to a compile-time transformation which eliminates higher-order functions, replacing them by a single first-order apply function. The technique was first described by John C. Reynolds in his 1972 paper, "Definitional Interpreters for Higher-Order Programming Languages". Reynolds' observation was that a given program contains only finitely many function abstractions, so that each can be assigned (and replaced by) a unique identifier.".
- Q5251733 label "Defunctionalization".