Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
The concept of a supercompiler
ACM Transactions on Programming Languages and Systems (TOPLAS) - The MIT Press scientific computation series
Program transformation by supercompilation
on Programs as data objects
Journal of Symbolic Computation
Foundations of deductive databases and logic programming
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Generalized partial computation for a lazy functional language
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
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
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
From SOS rules to proof principles: an operational metatheory for functional languages
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Convergence of program transformers in the metric space of trees
Science of Computer Programming - Special issue on mathematics of program construction
The Definition of Standard ML
Shortcut fusion for accumulating parameters & zip-like functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
The narrowing-driven approach to functional logic program specialization
New Generation Computing - Partial evaluation and program transformation
Program transformation system based on generalized partial computation
New Generation Computing - Partial evaluation and program transformation
Towards Unifying Partial Evaluation, Deforestation, Supercompilation, and GPC
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
Semantic definitions in REFAL and the automatic production of compilers
Semantics-Directed Compiler Generation, Proceedings of a Workshop
The nofib Benchmark Suite of Haskell Programs
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Deforestation for Higher-Order Functions
Proceedings of the 1992 Glasgow Workshop on Functional Programming
A supercompiler system based on the language REFAL
ACM SIGPLAN Notices
Lightweight fusion by fixed point promotion
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Improved fusion for optimizing generics
PADL'05 Proceedings of the 7th international conference on Practical Aspects of Declarative Languages
Losing functions without gaining data: another look at defunctionalisation
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Supercompilation by evaluation
Proceedings of the third ACM Haskell symposium on Haskell
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Taming code explosion in supercompilation
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Termination combinators forever
Proceedings of the 4th ACM symposium on Haskell
FliPpr: a prettier invertible printing system
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Hi-index | 0.00 |
Previous deforestation and supercompilation algorithms may introduce accidental termination when applied to call-by-value programs. This hides looping bugs from the programmer, and changes the behavior of a program depending on whether it is optimized or not. We present a supercompilation algorithm for a higher-order call-by-value language and we prove that the algorithm both terminates and preserves termination properties. This algorithm utilizes strictness information for deciding whether to substitute or not and compares favorably with previous call-by-name transformations.