In 1972, Reynolds outlined a general method for eliminating functional arguments known as defunctionalization. The idea underlying defunctionalization is encoding functional values as first-order data, and then to realized the applications of the encoded function via an apply function. Although this process is simple enough, problems arise when defunctionalization is used in a polymorphic language. In such a language, a functional argument of a higher-order function can take different type instances in different applications. As a consequence, its associated apply function can be untypable in the soucre language. In the paper we present a defunctionalization transformation which preserves typability. Moreover, the transformation imposes no ...
Automatic termination proofs of functional programming languages are an often challenged problem Mos...
. Higher-order programming languages, such as ML, permit a flexible programming style by using compi...
Many functions have to be written over and over again for different datatypes, either because dataty...
Defunctionalization is a program transformation that aims to turn a higher-order functional program ...
We describe an automated transformation which takes a higher-order program, and a produces an equiva...
Most type systems that support polymorphic functions are based on a version of System-F. We argue th...
Most type systems that support polymorphic functions are based on a version of System-F. We argue th...
Intensional polymorphism, the ability to dispatch to different routines based on types at run time...
Intensional polymorphism, the ability to dispatch to dierent routines based on types at run time, en...
This article is the second part of a two articles series about a calculus with higher-order polymorp...
Intensional polymorphism, the ability to dispatch to different routines based on types at run time, ...
. We consider the problem of analyzing and proving correct simple closure conversion strategies for ...
Functions play a central role in type theory, logic and computation. We describe how the notions of ...
The type-free ¿-calculus is powerful enough to contain all the polymorphic and higher-order nature o...
We introduce a method to detect and eliminate dead code in typed functional programming languages....
Automatic termination proofs of functional programming languages are an often challenged problem Mos...
. Higher-order programming languages, such as ML, permit a flexible programming style by using compi...
Many functions have to be written over and over again for different datatypes, either because dataty...
Defunctionalization is a program transformation that aims to turn a higher-order functional program ...
We describe an automated transformation which takes a higher-order program, and a produces an equiva...
Most type systems that support polymorphic functions are based on a version of System-F. We argue th...
Most type systems that support polymorphic functions are based on a version of System-F. We argue th...
Intensional polymorphism, the ability to dispatch to different routines based on types at run time...
Intensional polymorphism, the ability to dispatch to dierent routines based on types at run time, en...
This article is the second part of a two articles series about a calculus with higher-order polymorp...
Intensional polymorphism, the ability to dispatch to different routines based on types at run time, ...
. We consider the problem of analyzing and proving correct simple closure conversion strategies for ...
Functions play a central role in type theory, logic and computation. We describe how the notions of ...
The type-free ¿-calculus is powerful enough to contain all the polymorphic and higher-order nature o...
We introduce a method to detect and eliminate dead code in typed functional programming languages....
Automatic termination proofs of functional programming languages are an often challenged problem Mos...
. Higher-order programming languages, such as ML, permit a flexible programming style by using compi...
Many functions have to be written over and over again for different datatypes, either because dataty...