A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Tabulation Techniques for Recursive Programs
ACM Computing Surveys (CSUR)
A Deductive Approach to Program Synthesis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
Characterization and elimination of redundancy in recursive programs
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
Program abstraction and instantiation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient compilation of linear recursive functions into object level loops
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
IEEE Transactions on Software Engineering
Unfold/fold transformations and loop optimization of logic programs
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
A transformational approach to the derivation of hardware algorithms from recurrence equations
Proceedings of the 1988 ACM/IEEE conference on Supercomputing
Deriving programs using generic algorithms
IBM Systems Journal
Optimization of functional programs by grammar thinning
ACM Transactions on Programming Languages and Systems (TOPLAS)
Constraints to stop higher-order deforestation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ICSE '85 Proceedings of the 8th international conference on Software engineering
From recursion to iteration: what are the optimizations?
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Listlessness is better than laziness: Lazy evaluation and garbage collection at compile-time
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Schema recognition for program transformations
LFP '84 Proceedings of the 1984 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
Proceedings of the 1983 ACM SIGPLAN symposium on Programming language issues in software systems
Theory of linear equations applied to program transformation
IJCAI'83 Proceedings of the Eighth international joint conference on Artificial intelligence - Volume 1
Hi-index | 0.01 |
The perceived inefficiency in execution functional programming languages has been an obstacle to their widespread acceptance. Consequently, algorithms are often coded for efficient execution at the expense of clarity. This compromises the functional style, which is the prime advantage of such languages. We argue that high-level program transformations can relieve the programmer from concern for efficiency in many instances. We present several transformations applicable to FP program schemes, and show how these may be proven using fixpoint induction. We also show how specific subalgebras may be exploited to develop more specialised transformations, and suggest that this may be the most fruitful direction for further efforts to take. Comparison with earlier work on transformations reveals that the use of variables in LISP-like languages has often interfered with the identification of superficially dissimilar programs as instances of a common scheme. A variable-free notation such as FP has proven easier to work with.