Higher-Order and Symbolic Computation, 19(1)

Polymorphic Typed Defunctionalization and Concretization

François Pottier and Nadji Gauthier, INRIA, Le Chesnay Cedex, France

Abstract: Defunctionalization is a program transformation that eliminates functions as first-class values. We show that defunctionalization can be viewed as a type-preserving transformation of an extension of System F with guarded algebraic data types into itself. We also suggest that defunctionalization is an instance of concretization, a more general technique that allows eliminating constructs other than functions. We illustrate this point by presenting two new type-preserving transformations that can be viewed as instances of concretization. One eliminates Rémy-style polymorphic records; the other eliminates the dictionary records introduced by the standard compilation scheme for Haskell's type classes.

This article is not yet available.

[picture of journal cover]

June 2006 - hosc@brics.dk