Publisher Summary The process of deriving programs from specifications can sometimes be viewed as a simplification process. However, not all program derivations are simplifications. Some other derivations described in the literature are (1) the synchronizations of computations like die ones based on the tupling strategy or (2) the definitions of more general computations, like the ones based on the generalization strategy. Lambda abstraction is a transformation strategy based on the idea of forced folding, which is a method for obtaining efficient recursive programs and inventing suitable auxiliary functions when transforming programs. The application of the lambda abstraction consists in the introduction of a new function that is obtained by breaking a given expression into a lambda formula applied to suitable arguments. The expression to be broken is often the one that does not allow a folding step because of a sub-expression mismatch. This chapter analyzes the transformation process from locally recursive programs to nonlocal recursive ones and presents the comparison of abstraction strategy with the techniques of lazy evaluation and local recursion. It discusses synergism between lambda abstraction and Tupling.
[1]
Raymond Aubin,et al.
Mechanizing structural induction
,
1976
.
[2]
Robert S. Boyer,et al.
Proving Theorems about LISP Functions
,
1973,
JACM.
[3]
Alberto Pettorossi,et al.
A powerful strategy for deriving efficient programs by transformation
,
1984,
LFP '84.
[4]
Andrzej Skowron,et al.
Higher Order Generalization in Program Derivation
,
1987,
TAPSOFT, Vol.2.
[5]
Alberto Pettorossi,et al.
Program Development Using Lambda Abstraction
,
1987,
FSTTCS.
[6]
John Darlington,et al.
An Experimental Program Transformation and Synthesis System
,
1986,
Artif. Intell..
[7]
Martin S. Feather,et al.
A System for Assisting Program Transformation
,
1982,
TOPL.
[8]
Thomas Johnsson,et al.
Lambda Lifting: Treansforming Programs to Recursive Equations
,
1985,
FPCA.
[9]
R. J. M. Hughes,et al.
Super-combinators a new implementation method for applicative languages
,
1982,
LFP '82.
[10]
John Darlington,et al.
A Transformation System for Developing Recursive Programs
,
1977,
J. ACM.