If the continuations in functional data-structure-generating programs are made explicit and represented as records, they can be recycled." Once they have served their purpose as temporary, intermediate structures for managing program control, the space they occupy can be reused for the structures that the programs produce as their output. To effect this immediate memory reclamation, we use a sequence of correctness-preserving program transformations, demonstrated through a series of simple examples. We then apply the transformations to general anamorphism operators, with the important consequence that all nite-output anamorphisms can now be run without any stack- or continuationspace overhead.
Jonathan Sobel, Daniel P. Friedman