Structured Programming with go to Statements
ACM Computing Surveys (CSUR)
Notes on recursion elimination
Communications of the ACM
Another recursion induction principle
Communications of the ACM
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
On the properties and applications of program schemas
On the properties and applications of program schemas
Eliminating Redundant Recursive Calls.
ACM Transactions on Programming Languages and Systems (TOPLAS)
Tabulation Techniques for Recursive Programs
ACM Computing Surveys (CSUR)
Characterization and elimination of redundancy in recursive programs
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Program transformation system based on generalized partial computation
New Generation Computing - Partial evaluation and program transformation
Fast partial evaluation of pattern matching in strings
Proceedings of the 2003 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Abstracto 84: The next generation
ACM '79 Proceedings of the 1979 annual conference
The abstraction and instantiation of string-matching programs
The essence of computation
WSDFU: program transformation system based on generalized partial computation
The essence of computation
Transformation by interpreter specialisation
Science of Computer Programming - Special issue on program transformation
ALGOL Bulletin
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Termination analysis and specialization-point insertion in offline partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Fast partial evaluation of pattern matching in strings
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 48.22 |
A new technique of program transformation, called “recursion introduction,” is described and applied to two algorithms which solve pattern matching problems. By using recursion introduction, algorithms which manipulate a stack are first translated into recursive algorithms in which no stack operations occur. These algorithms are then subjected to a second transformation, a method of recursion elimination called “tabulation,” to produce programs with a very efficient running time. In particular, it is shown how the fast linear pattern matching algorithm of Knuth, Morris, and Pratt can be derived in a few steps from a simple nonlinear stack algorithm.