The promotion and accumulation strategies in transformational programming
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
An introduction to the theory of lists
Proceedings of the NATO Advanced Study Institute on Logic of programming and calculi of discrete design
Data structures and program transformation
Science of Computer Programming
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Warm fusion: deriving build-catas from recursive definitions
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Deriving structural hylomorphisms from recursive definitions
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Rules and strategies for transforming functional and logic programs
ACM Computing Surveys (CSUR)
Algebra of programming
Tupling calculation eliminates multiple data traversals
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Program transformation in calculational form
ACM Computing Surveys (CSUR) - Special issue: electronic supplement to the September 1998 issue
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
New Generation Computing
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Semantics of the Domain of Flow Diagrams
Journal of the ACM (JACM)
Generic downwards accumulations
Science of Computer Programming - Special issue on mathematics of program construction
Communications of the ACM
Algorithmic Language and Program Development
Algorithmic Language and Program Development
Shortcut fusion for accumulating parameters & zip-like functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Introduction to Functional Programming
Introduction to Functional Programming
Deforestation: Transforming Programs to Eliminate Trees
ESOP '88 Proceedings of the 2nd European Symposium on Programming
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic Programming
Calculating functional programs
Algebraic and coalgebraic methods in the mathematics of program construction
A categorical programming language
A categorical programming language
A pointless derivation of radix sort
Journal of Functional Programming
Constraint-aware Schema Transformation
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
Functional programs are particularly well suited to formal manipulation by equational reasoning. In particular, it is straightforward to use calculational methods for program transformation. Well-known transformation techniques, like tupling or the introduction of accumulating parameters, can be implemented using calculation through the use of the fusion (or promotion) strategy. In this paper we revisit this transformation method, but, unlike most of the previous work on this subject, we adhere to a pure point-free calculus that emphasizes the advantages of equational reasoning. We focus on the accumulation strategy initially proposed by Bird, where the transformed programs are seen as higher-order folds calculated systematically from a specification. The machinery of the calculus is expanded with higher-order point-free operators that simplify the calculations. A substantial number of examples (both classic and new) are fully developed, and we introduce several shortcut optimization rules that capture typical transformation patterns.