Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Safe fusion of functional expressions
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Shortcut deforestation in calculational form
FPCA '95 Proceedings of the seventh international 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
Proving the correctness of recursion-based automatic program transformations
TAPSOFT '95 Selected papers from the 6th international joint conference on Theory and practice of software development
Typer inference builds a short cut to deforestation
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Shortcut fusion for accumulating parameters & zip-like functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Warm fusion in Stratego: A case study in generation of program transformation systems
Annals of Mathematics and Artificial Intelligence
Axioms for Recursion in Call-by-Value
Higher-Order and Symbolic Computation
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Homomorphisms and Promotability
Proceedings of the International Conference on Mathematics of Program Construction, 375th Anniversary of the Groningen University
Monadic augment and generalised short cut fusion
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Algebraic fusion of functions with an accumulating parameter and its improvement
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
A shortcut fusion rule for circular program calculation
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Information Processing Letters
Defunctionalized interpreters for programming languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Positive supercompilation for a higher order call-by-value language
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Algebraic fusion of functions with an accumulating parameter and its improvement
Journal of Functional Programming
Pushing Predicates into Recursive SQL Common Table Expressions
ADBIS '09 Proceedings of the 13th East European Conference on Advances in Databases and Information Systems
Inter-deriving semantic artifacts for object-oriented programming
Journal of Computer and System Sciences
From reduction-based to reduction-free normalization
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Context-preserving XQuery fusion
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Defunctionalized interpreters for call-by-need evaluation
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Theoretical Computer Science
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
Deriving the full-reducing Krivine machine from the small-step operational semantics of normal order
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
A synthetic operational account of call-by-need evaluation
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Deriving interpretations of the gradually-typed lambda calculus
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
This paper proposes a lightweight fusion method for general recursive function definitions. Compared with existing proposals, our method has several significant practical features: it works for general recursive functions on general algebraic data types; it does not produce extra runtime overhea (except for possible code size increase due to the success of fusion); and it is readily incorporated in standard inlining optimization. This is achieved by extending the ordinary inlining process with a new fusion law that transforms a term of the form f o (fixgλx.E) to a new fixed point term fixhλx.E′ by promoting the function f through the fixed point operator. This is a sound syntactic transformation rule that is not sensitive to the types of f and g. This property makes our method applicable to wide range of functions including those with multi-parameters in both curried and uncurried forms. Although this method does not guarantee any form of completeness, it fuses typical examples discussed in the literature and others that involve accumulating parameters, either in the tt foldl-like specific forms or in general recursive forms, without any additional machinery. In order to substantiate our claim, we have implemented our method in a compiler. Although it is preliminary, it demonstrates practical feasibility of this method.