Strictification of circular programs

João Paulo Fernandes, João Saraiva, Daniel Seidel, Janis Voigtländer. Strictification of circular programs. In Siau-Cheng Khoo, Jeremy G. Siek, editors, Proceedings of the 2011 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2011, Austin, TX, USA, January 24-25, 2011. pages 131-140, ACM, 2011. [doi]

Abstract

Circular functional programs (necessarily evaluated lazily)
have been used as algorithmic tools, as attribute grammar
implementations, and as target for program transformation
techniques. Classically, Richard Bird [1984] showed how to
transform certain multitraversal programs (which could be
evaluated strictly or lazily) into one-traversal ones using
circular bindings. Can we go the other way, even for programs
that are not in the image of his technique? That is the
question we pursue in this paper. We develop an approach that
on the one hand lets us deal with typical examples
corresponding to attribute grammars, but on the other hand
also helps to derive new algorithms for problems not
previously in reach.