Higher-Order and Symbolic Computation

, Volume 19, Issue 1, pp 125–162

Polymorphic typed defunctionalization and concretization

  • François Pottier
  • Nadji Gauthier

DOI: 10.1007/s10990-006-8611-7

Cite this article as:
Pottier, F. & Gauthier, N. Higher-Order Symb Comput (2006) 19: 125. doi:10.1007/s10990-006-8611-7


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 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.


DefunctionalizationClosure conversionPolymorphismType-preserving compilationConcretizationPolymorphic recordsDictionary recordsType classes

Copyright information

© Springer Science + Business Media, LLC 2006

Authors and Affiliations

  • François Pottier
    • 1
  • Nadji Gauthier
    • 1
  1. 1.INRIALe Chesnay CedexFrance