The promotion and accumulation strategies in transformational programming
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
On the Development of the Algebra of Functional Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
Algorithmic Language and Program Development
Algorithmic Language and Program Development
Proceedings of the International Colloquium on Formalization of Programming Concepts
Schema recognition for program transformations
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Transformations of FP program schemes
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Fundamentals of Deductive Program Synthesis
IEEE Transactions on Software Engineering
Linear logic and permutation stacks—the Forth shall be first
ACM SIGARCH Computer Architecture News - Special issue: panel sessions of the 1991 workshop on multithreaded computers
Compiler support for efficient processing of XML datasets
ICS '03 Proceedings of the 17th annual international conference on Supercomputing
Recursive function data allocation to scratch-pad memory
CASES '07 Proceedings of the 2007 international conference on Compilers, architecture, and synthesis for embedded systems
Hi-index | 0.00 |
Whilst widely recognised as an excellent means for solving problems and for designing software, functional programming languages have suffered from their inefficient implementations on conventional computers. A route to improved runtime performance is to transform recursively defined functions into programs which execute more quickly and/or consume less space. We derive equivalent imperative programming language loops for a large class of linear recursive functions of which the tail-recursive functions form a very small subset. We first identify a small set of primitive function defining expressions for which we determine the corresponding loop-expressions. We then determine the loop-expressions for linear functions defined by any expressions which are formed from those primitives. In this way, a very general class of linear functions can be transformed automatically into loops in the parsing phase of a compiler, since the parser has in any case to determine the hierarchical structure of function definitions. Further transformation may involve specific properties of particular defining expressions, and adopt previous schemes. In addition, equivalent linear functions can be found for many non-linear ones which can therefore also be transformed into loops.