PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
The definition of Standard ML
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Automatic autoprojection of recursive equations with global variable and abstract data types
Science of Computer Programming
Efficient type inference for higher-order binding-time analysis
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Tutorial notes on partial evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Topics in online partial evaluation
Topics in online partial evaluation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Continuation-based partial evaluation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Proceedings of the first ACM SIGPLAN international conference on Functional programming
The effectiveness of flow analysis for inlining
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Encoding types in ML-like languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Polymorphic Binding-Time Analysis
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
Sound Specialization in the Presence of Computational Effects
TACS '97 Proceedings of the Third International Symposium on Theoretical Aspects of Computer Software
Effective Specialization of Realistic Programs via Use Sensitivity
SAS '97 Proceedings of the 4th International Symposium on Static Analysis
Self-Applicable Online Partial Evaluation
Selected Papers from the Internaltional Seminar on Partial Evaluation
Combinators for program generation
Journal of Functional Programming
Implementing Circularity Using Partial Evaluation
PADO '01 Proceedings of the Second Symposium on Programs as Data Objects
Offline partial evaluation can be as accurate as online partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Is there a fourth Futamura projection?
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Normalization by evaluation for the computational lambda-calculus
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
An experiment with the fourth futamura projection
PSI'09 Proceedings of the 7th international Andrei Ershov Memorial conference on Perspectives of Systems Informatics
Hi-index | 0.00 |
This paper presents a hybrid method of partial evaluation (PE), which combines the power of online PE and the efficiency of offline PE, for a typed strict functional language. We begin with a naive online partial evaluator, and make it efficient without sacrificing its power. To this end, we (1) use state (instead of continuation) for let-insertion, (2) take a so-called cogen approach, and (3) decrease unnecessary computations—such as unnecessary let-insertions and unused values/expressions—with a type-based use analysis, which subsumes various monovariant binding-time analyses. Our method yields the same residual programs as the naive online partial evaluator, modulo inlining of redundant let-bindings. We implemented and compared our method and existing methods, both online and offline. Experiments show that our method is at least twice as fast as any other method (e.g., more than 7 times as fast as Thiemann's cogen approach to offline PE in the specialization of the power function, thanks to the reduction of unnecessary let-insertions) when they yield equivalent residual programs.