An experiment in partial evaluation: the generation of a compiler generator
Proc. of the first international conference on Rewriting techniques and applications
Syntactic extensions in the programming language LISP
Syntactic extensions in the programming language LISP
Intensions and extensions in a reflective tower
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Syntactic abstraction in Scheme
Lisp and Symbolic Computation
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
A modal analysis of staged computation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
MetaML and multi-stage programming with explicit annotations
Theoretical Computer Science - Partial evaluation and semantics-based program manipulation
Static and Dynamic Program Compilation by Interpreter Specialization
Higher-Order and Symbolic Computation
Macros as multi-stage computations: type-safe, generative, binding macros in MacroML
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Certifying Compilation and Run-Time Code Generation
Higher-Order and Symbolic Computation
On Some Semantic Issues in the Reflective Tower
Proceedings of the 5th International Conference on Mathematical Foundations of Programming Semantics
A Semantic Account of Type-Directed Partial Evaluation
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Multi-Stage Programming: Axiomatization and Type Safety
ICALP '98 Proceedings of the 25th International Colloquium on Automata, Languages and Programming
Efficient Multi-level Generating Extensions for Program Specialization
PLILPS '95 Proceedings of the 7th 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
A temporal-logic approach to binding-time analysis
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Reflection and semantics in LISP
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Automatic, Template-Based Run-Time Specialization: Implementation and Experimental Study
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
MetaML and Multi-Stage Programming with Explicit Annotations
MetaML and Multi-Stage Programming with Explicit Annotations
Multistage programming: its theory and applications
Multistage programming: its theory and applications
Closed types for a safe imperative MetaML
Journal of Functional Programming
Compiling for template-based run-time code generation
Journal of Functional Programming
Normalization by evaluation for the computational lambda-calculus
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
Invited talk: program generators and the tools to make them
PPDP '04 Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
Program generators and the tools to make them
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A methodology for generating verified combinatorial circuits
Proceedings of the 4th ACM international conference on Embedded software
Implementing DSLs in metaOCaml
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Software reuse for scientific computing through program generation
ACM Transactions on Software Engineering and Methodology (TOSEM)
Towards a fully-reflective meta-programming language
ACSC '05 Proceedings of the Twenty-eighth Australasian conference on Computer Science - Volume 38
Staged computation with names and necessity
Journal of Functional Programming
A monadic approach for avoiding code duplication when staging memoized functions
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Gaussian elimination: a case study in efficient genericity with MetaOCaml
Science of Computer Programming - Special issue on the first MetaOCaml workshop 2004
In search of a program generator to implement generic transformations for high-performance computing
Science of Computer Programming - Special issue on the first MetaOCaml workshop 2004
MetaOCaml server pages: web publishing as staged computation
Science of Computer Programming - Special issue on the first MetaOCaml workshop 2004
Experiences with an object-oriented, multi-stage language
Science of Computer Programming - Special issue on the first MetaOCaml workshop 2004
Expressive and safe static reflection with MorphJ
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Domain-specific languages and program generation with meta-AspectJ
ACM Transactions on Software Engineering and Methodology (TOSEM)
Quick and Practical Run-Time Evaluation of Multiple Program Optimizations
Transactions on High-Performance Embedded Architectures and Compilers I
Scrap your boilerplate: prologically!
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Why Smalltalk wins the host languages shootout
IWST '09 Proceedings of the International Workshop on Smalltalk Technologies
Deriving compilers and virtual machines for a multi-level language
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Mint: Java multi-stage programming using weak separability
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Embedding languages without breaking tools
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Morphing: Structurally shaping a class by reflecting on others
ACM Transactions on Programming Languages and Systems (TOPLAS)
Multi-stage programming with functors and monads: Eliminating abstraction overhead from generic code
Science of Computer Programming
A type system for reflective program generators
Science of Computer Programming
Statically safe program generation with SafeGen
Science of Computer Programming
A language for the compact representation of multiple program versions
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Program generation and components
FMCO'04 Proceedings of the Third international conference on Formal Methods for Components and Objects
Multi-stage programming with functors and monads: eliminating abstraction overhead from generic code
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Statically safe program generation with safegen
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs
Communications of the ACM
Honu: syntactic extension for algebraic notation through enforestation
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
Morphing: safely shaping a class in the image of others
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Forge: generating a high performance DSL implementation from a declarative specification
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Spiral in scala: towards the systematic construction of generators for performance libraries
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Hi-index | 0.02 |
The paper addresses theoretical and practical aspects of implementing multi-stage languages using abstract syntax trees (ASTs), gensym, and reflection. We present an operational account of the correctness of this approach, and report on our experience with a bytecode compiler called MetaOCaml that is based on this strategy. Current performance measurements reveal interesting characteristics of the underlying OCaml compiler, and illustrate why this strategy can be particularly useful for implementing domain-specific languages in a typed, functional setting.