Denotational semantics: a methodology for language development
Denotational semantics: a methodology for language development
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Partial type inference for untyped functional programs
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Handbook of theoretical computer science (vol. B)
A strongly-typed self-applicable partial evaluator
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
A self-applicable partial evaluator for the lambda calculus: correctness and pragmatics
ACM Transactions on Programming Languages and Systems (TOPLAS)
Two-level functional languages
Two-level functional languages
Automatic autoprojection of higher order recursive equations
ESOP '90 Selected papers from the symposium on 3rd European symposium on programming
Improving binding times without explicit CPS-conversion
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
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
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A generic account of continuation-passing styles
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
Reasoning about programs in continuation-passing style
Lisp and Symbolic Computation - Special issue on continuations—part I
A tractable Scheme implementation
Lisp and Symbolic Computation
Self-applicable online partial evaluation of the pure lambda calculus
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A generalization of exceptions and control in ML-like languages
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
A general approach for run-time specialization and its application to C
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Revisiting catamorphisms over datatypes with embedded functions (or, programs from outer space)
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Foundations of programming languages
Foundations of programming languages
Two for the price of one: composing partial evaluation and compilation
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Revised5 report on the algorithmic language scheme
ACM SIGPLAN Notices
A simple applicative language: mini-ML
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Deriving Target Code as a Representation of Continuation Semantics
ACM Transactions on Programming Languages and Systems (TOPLAS)
Selected Papers from the Internaltional Seminar on Partial Evaluation
Selected Papers from the Internaltional Seminar on Partial Evaluation
A Generic Framework for Specialization (Abridged Version)
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
Efficient Multi-level Generating Extensions for Program Specialization
PLILPS '95 Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs
Implementing Memoization for Partial Evaluation
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
Functor Categories and Two-Level Languages
FoSSaCS '98 Proceedings of the First International Conference on Foundations of Software Science and Computation Structure
Fast Binding-Time Analysis for Multi-Level Specialization
Proceedings of the Second International Andrei Ershov Memorial Conference on Perspectives of System Informatics
Compiler Generation for Interactive Graphics Using Intermediate Code
Selected Papers from the Internaltional Seminar on Partial Evaluation
Efficiently Generating Efficient Generating Extensions in Prolog
Selected Papers from the Internaltional Seminar on Partial Evaluation
A supercompiler system based on the language REFAL
ACM SIGPLAN Notices
Online-and-offline partial evaluation (extended abstract): a mixed approach
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Online partial evaluation for shift and reset
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
A Hybrid Approach to Online and Offline Partial Evaluation
Higher-Order and Symbolic Computation
The Second Futamura Projection for Type-Directed Partial Evaluation
Higher-Order and Symbolic Computation
Final shift for call/cc:: direct implementation of shift and reset
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Compiling Embedded Programs to Byte Code
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
A symmetric approach to compilation and decompilation
The essence of computation
Program specialization for execution monitoring
Journal of Functional Programming
Polymorphic specialization for ML
ACM Transactions on Programming Languages and Systems (TOPLAS)
Offline partial evaluation for shift and reset
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
A static simulation of dynamic delimited control
Higher-Order and Symbolic Computation
Shifting the stage: staging with delimited control
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Embedded Probabilistic Programming
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
Context-based proofs of termination for typed delimited-control operators
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages
Journal of Functional Programming
Continuation-based partial evaluation without continuations
SAS'03 Proceedings of the 10th international conference on Static analysis
Tagging, encoding, and jones optimality
ESOP'03 Proceedings of the 12th European conference on Programming
A substructural type system for delimited continuations
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Towards deriving type systems and implementations for coroutines
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Shifting the stage: Staging with delimited control
Journal of Functional Programming
Tag-Free combinators for binding-time polymorphic program generation
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Typed tagless final interpreters
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Combinators for impure yet hygienic code generation
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
We present a general method to transform a compositional specification of a specializer for a functional programming language into a set of combinators that can be used to perform the same specialization more efficiently. The main transformation steps are the transition to higher-order abstract syntax and untagging. All transformation steps are proved correct. The resulting combinators can be implemented in any functional language, typed or untyped, pure or impure. They may also be considered as forming a domain-specific language for meta-programming. We demonstrate the generality of the method by applying it to several specializers of increasing strength. We demonstrate its efficiency by comparing it with a traditional specialization system based on self-application.