Refunctionalization at Work

  • Olivier Danvy
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4014)


First-order programs are desired in a variety of settings and for a variety of reasons. Their coming into existence in first-order form may be unplanned or it could be the deliberate result of a form of “firstification” such as closure conversion, (super)combinator conversion, or defunctionalization. In the latter case, they are higher-order programs in disguise, just as iterative programs with accumulators are often recursive programs in disguise.

This talk is about Reynolds’s defunctionalization [1, 2]. Over the last few years, we have observed that a number of existing first-order programs turn out to be in the range of defunctionalization, and therefore they directly correspond to higher-order programs, even though they were designed independently of any higher-order representation. Not all first-order programs, however, are in defunctionalized form.

The goal of this talk is to refine our earlier characterization of what it means to be in defunctionalized form [3], and to investigate how one can tease a first-order program into defunctionalized form. On the way, we present a variety of independently known programs that are in (or can be teased into) defunctionalized form, and we exhibit their functional counterpart—a process we refer to as ‘refunctionalization’ since it is a left inverse of defunctionalization.


Software Engineer Formal Language Left Inverse Recursive Program Declarative Programming 
These keywords were added by machine and not by the authors.


  1. 1.
    Reynolds, J.C.: Definitional interpreters for higher-order programming languages. In: Proc.of 25th ACM Nat. Conf., pp. 717–740. ACM Press, New York (1972); Reprinted in Higher-Order and Symb. Comput. 11(4), 363–397 (1998)Google Scholar
  2. 2.
    Reynolds, J.C.: Definitional interpreters revisited. Higher-Order and Symb. Comput. 11(4), 355–361 (1998)MATHCrossRefGoogle Scholar
  3. 3.
    Danvy, O., Nielsen, L.R.: Defunctionalization at work. In: Proc. of 3rd Int. ACM SIGPLAN Conf. on Principles and Practice of Declarative Programming PPDP 2001, pp. 162–174. ACM Press, New York (2001)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Olivier Danvy
    • 1
  1. 1.BRICS, Department of Computer ScienceUniversity of AarhusAarhus NDenmark

Personalised recommendations