taming the y operator
In this paper I present a set of conceptually simple but involved techniques used by LIAR, the MIT SCHEME compiler, to generate good code when recursive procedures are specified in terms of suitable versions of the Y operator. The techniques presented are general-purpose analysis and optimization tools, similar to well-known techniques used in the analysis and optimization of applicative languages, that combine synergistically to enable LIAR to generate identical machine code for ordinary recursive definitions written using letrec and those written using suitable forms of Y.
operability paper scheme compilation general code recursion procedure version analysis optimality tools language definition