On-line partial evaluators are hardly ever selfapplicable, because the complexity of deciding whether to residualize terms causes combinatorial explosion when self-application is attempted. Recently, T. Mogensen found a way to write a self-applicable online partial evaluator for -calculus. His method is to regard every -term as havingboth static and dynamic aspects; then, applications can always be done statically (using the static aspect of the operator). However, the absence of decision-making about residualization has a down side: his partial evaluator knows only how to fully reduce partially evaluated terms. The result is considerable code explosion. We show how this problem can be overcome, in part, by changing the type of the partial evaluator, and giving a new version of the Futamura projections to correspond to that new type. Speci cally, we have the partial evaluator take a third argument, called a strategy, which \advises" the partial evaluator whether to residualize. S...
M. Beckman, Samuel N. Kamin