Derivation of programs which traverse their input data only once
Advanced Programming Methodologies
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Total correctness by local improvement in the transformation of functional programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Let-floating: moving bindings to give faster programs
Proceedings of the first ACM SIGPLAN international conference on Functional programming
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Using circular programs to deforest in accumulating parameters
ASIA-PEPM '02 Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation
Shortcut fusion for accumulating parameters & zip-like functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A Generalization of Short-Cut Fusion and its Correctness Proof
Higher-Order and Symbolic Computation
Attribute grammars as a functional programming paradigm
Proceedings of the Functional Programming Languages and Computer Architecture
Declarative Program Transformation: A Deforestation Case-Study
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Comparison of Deforestation Techniques for Functional Programs and for Tree Transducers
FLOPS '99 Proceedings of the 4th Fuji International Symposium on Functional and Logic Programming
Benefits of Tree Transducers for Optimizing Functional Programs
Proceedings of the 18th Conference on Foundations of Software Technology and Theoretical Computer Science
On Deforesting Parameters of Accumulating Maps
LOPSTR '01 Selected papers from the 11th International Workshop on Logic Based Program Synthesis and Transformation
Proceedings of the IFIP TC2/WG 2.1 State-of-the-Art Report on Formal Program Development
Transformation in a Non-Strict Language: An Approach to Instantiation
Proceedings of the 1989 Glasgow Workshop on Functional Programming
Extending Deforestation for First Order functional Programs
Proceedings of the 1991 Glasgow Workshop on Functional Programming
Optimising Recursive Functions Yielding Multiple Results in Tuples in a Lazy Functional Language
IFL '99 Selected Papers from the 11th International Workshop on Implementation of Functional Languages
Secrets of the Glasgow Haskell Compiler inliner
Journal of Functional Programming
Fusion with stacks and accumulating parameters
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Algebraic fusion of functions with an accumulating parameter and its improvement
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Tools and libraries to model and manipulate circular programs
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Algebraic fusion of functions with an accumulating parameter and its improvement
Journal of Functional Programming
Semantics and pragmatics of new shortcut fusion rules
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Strictification of circular programs
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Categorical descriptional composition
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Swapping arguments and results of recursive functions
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
Shortcut fusion rules for the derivation of circular and higher-order programs
Higher-Order and Symbolic Computation
A shortcut fusion approach to accumulations
Science of Computer Programming
Hi-index | 0.00 |
This paper presents a functional program transformation that removes intermediate data structures in compositions of two members of a class of recursive functions with accumulating parameters. To avoid multiple traversals of the input data structure, the composition algorithm produces circular programs that make essential use of lazy evaluation and local recursion. The resulting programs are simplified using a post-processing phase sketched in the paper. The presented transformation, called lazy composition, is compared with related transformation techniques both on a qualitative level and based on runtime measurements. An alternative use of higher-orderedness instead of circularity is also briefly explored.