Defunctionalization was introduced by John Reynolds in his 1972article Definitional Interpreters for Higher-Order Programming Languages. Defunctionalization transforms a higher-order program into a first-order one, representing functional values as data structures. Since then it has been used quite widely, but we observe that it has never been proven correct. We formalize defunctionalization denotationally for a typed functional language, and we prove that it preserves the meaning of any terminating program. Our proof uses logical relations.Keywords: defunctionalization, program transformation, denotational semantics, logical relations
In 1972, Reynolds outlined a general method for eliminating functional arguments known as defunction...
A declarative program P is a *theory* in a given computational logic L, so that *computation* with s...
Church's lambda-calculus underlies the syntax (i.e., the form) and the semantics (i.e., the meaning)...
We study practical applications of Reynolds's defunctionalization technique, which is a whole-progra...
We present the left inverse of Reynolds's defunctionalization and we show its relevance to programmi...
AbstractWe present the left inverse of Reynolds’ defunctionalization and we show its relevance to pr...
Formal description of a language gives insight into the language itself. The formal description may ...
Denotational semantics is presented as a valuable theoretical tool, having many applications includi...
Defunctionalization is a program transformation that aims to turn a higher-order functional program ...
In game semantics and related approaches to programming language semantics, programs are modelled by...
In principle termination analysis is easy: find a well-founded partial order and prove that calls de...
AbstractWe present a simple computational metalanguage with general recursive types and multiple not...
In previous papers we have proposed an elementary discipline of strong functional programming (ESFP)...
Starting from a continuation-based interpreter for a simple logic programming language, propositiona...
It has often been observed that a point-free style of programming provides a more abstract view on p...
In 1972, Reynolds outlined a general method for eliminating functional arguments known as defunction...
A declarative program P is a *theory* in a given computational logic L, so that *computation* with s...
Church's lambda-calculus underlies the syntax (i.e., the form) and the semantics (i.e., the meaning)...
We study practical applications of Reynolds's defunctionalization technique, which is a whole-progra...
We present the left inverse of Reynolds's defunctionalization and we show its relevance to programmi...
AbstractWe present the left inverse of Reynolds’ defunctionalization and we show its relevance to pr...
Formal description of a language gives insight into the language itself. The formal description may ...
Denotational semantics is presented as a valuable theoretical tool, having many applications includi...
Defunctionalization is a program transformation that aims to turn a higher-order functional program ...
In game semantics and related approaches to programming language semantics, programs are modelled by...
In principle termination analysis is easy: find a well-founded partial order and prove that calls de...
AbstractWe present a simple computational metalanguage with general recursive types and multiple not...
In previous papers we have proposed an elementary discipline of strong functional programming (ESFP)...
Starting from a continuation-based interpreter for a simple logic programming language, propositiona...
It has often been observed that a point-free style of programming provides a more abstract view on p...
In 1972, Reynolds outlined a general method for eliminating functional arguments known as defunction...
A declarative program P is a *theory* in a given computational logic L, so that *computation* with s...
Church's lambda-calculus underlies the syntax (i.e., the form) and the semantics (i.e., the meaning)...