The promotion and accumulation strategies in transformational programming
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
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
Transformation of structure-shy programs: applied to XPath queries and strategic functions
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Coupled Transformation of Schemas, Documents, Queries, and Constraints
Electronic Notes in Theoretical Computer Science (ENTCS)
Calculating with lenses: optimising bidirectional transformations
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Transformation of structure-shy programs with application to XPath queries and strategic functions
Science of Computer Programming
A framework for point-free program transformation
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
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.