A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Program Improvement by Source-to-Source Transformation
Journal of the ACM (JACM)
Communications of the ACM
Programming language semantics and closed applicative languages
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Programming in reduction languages.
Programming in reduction languages.
IEEE Transactions on Software Engineering
Combinatory foundation of functional programming
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
Toward an algebra of nondeterministic programs
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
SLIPE '85 Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments
Hi-index | 0.00 |
Functional languages provide a framework in which combining existing programs to produce new ones is particularly simple and elegant. However, the penalty usually paid for such simplicity and elegance is poor execution efficiency, especially if the program under consideration is a combination of programs that are more general than required for the problem. We describe extensions and implementation techniques with which such combinations can be transformed into more specialized and generally faster programs. Our system is based on delaying explicit application for as long as possible by treating applications as compositions of suitable functions. The usual reduction rules then become a subset of the set of “optimization rules” which form the basis of our optimizer. These rules are similar to the identities of the algebra of programs given by Backus, but operate in a common framework in which composition plays a role similar to that of application in the reduction rules.