Two-level semantics and code generation
Theoretical Computer Science - First European Symposium on Programming, Saarbru:9Aicken, W. Germany, March 17:8
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Notions of computation and monads
Information and Computation
On the expressive power of programming languages
ESOP '90 Selected papers from the symposium on 3rd European symposium on programming
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
On abstraction and the expressive power of programming languages
TACS'91 Selected papers of the conference on Theoretical aspects of computer software
Syntactic abstraction in Scheme
Lisp and Symbolic Computation
The VLISP verified PreScheme compiler
Lisp and Symbolic Computation
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
An Automatic Program Generator for Multi-Level Specialization
Lisp and Symbolic Computation
Correctness of monadic state: an imperative call-by-need calculus
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dynamic typing as staged type inference
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Improvement in a lazy context: an operational theory for call-by-need
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Theory of Fexprs is Trivial
Lisp and Symbolic Computation
Embedding type structure in semantics
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Implicit parameters: dynamic scoping with static types
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Theoretical Computer Science
Higher-Order and Symbolic Computation
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 Metalanguage for Programming with Bound Names Modulo Renaming
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
Extensible Grammars for Language Specialization
DBLP-4 Proceedings of the Fourth International Workshop on Database Programming Languages - Object Models and Languages
A temporal-logic approach to binding-time analysis
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Semantical Analysis of Higher-Order Abstract Syntax
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Abstract Syntax and Variable Binding
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
DalI: An Untyped CBV Operational Semantics and Equational Theoryofr Datatypes with Binders(Technical Development)
Purely functional data structures
Purely functional data structures
Multistage programming: its theory and applications
Multistage programming: its theory and applications
What is a purely functional language?
Journal of Functional Programming
Maya: multiple-dispatch syntax extension in Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Composable and compilable macros:: you want it when?
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Template meta-programming for Haskell
ACM SIGPLAN Notices
Program Generation, Termination, and Binding-Time Analysis
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Macros That Compose: Systematic Macro Programming
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Implementing multi-stage languages using ASTs, Gensym, and reflection
Proceedings of the 2nd international conference on Generative programming and component engineering
Proceedings of the 2nd international conference on Generative programming and component engineering
Inlining as staged computation
Journal of Functional Programming
Termination analysis and specialization-point insertion in offline partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compile-time meta-programming in a dynamically typed OO language
DLS '05 Proceedings of the 2005 symposium on Dynamic languages
Proceedings of the 2006 workshop on ML
Reflective program generation with patterns
Proceedings of the 5th international conference on Generative programming and component engineering
Jeannie: granting java native interface developers their wishes
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Type-specialized staged programming with process separation
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Toward foundations for type-reflective metaprogramming
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Directly reflective meta-programming
Higher-Order and Symbolic Computation
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
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
ABI compatibility through a customizable language
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Backstage Java: making a difference in metaprogramming
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Efficient code generation for a domain specific language
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Syntactic abstraction in component interfaces
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
A semantic analysis of c++ templates
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
A multi-tier semantics for Hop
Higher-Order and Symbolic Computation
MOST-flexiPL: modular, statically typed, flexibly extensible programming language
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Type-specialized staged programming with process separation
Higher-Order and Symbolic Computation
Self model-driven engineering through metaprograms
Proceedings of the 17th Panhellenic Conference on Informatics
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Modular and automated type-soundness verification for language extensions
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Early detection of type errors in C++ templates
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
With few exceptions, macros have traditionally been viewed as operations on syntax trees or even on plain strings. This view makes macros seem ad hoc, and is at odds with two desirable features of contemporary typed functional languages: static typing and static scoping. At a deeper level, there is a need for a simple, usable semantics for macros. This paper argues that these problems can be addressed by formally viewing macros as multi-stage computations. This view eliminates the need for freshness conditions and tests on variable names, and provides a compositional interpretation that can serve as a basis for designing a sound type system for languages supporting macros, or even for compilation. To illustrate our approach, we develop and present MacroML, an extension of ML that supports inlining, recursive macros, and the definition of new binding constructs. The latter is subtle, and is the most novel addition in a statically typed setting. The semantics of a core subset of MacroML is given by an interpretation into MetaML, a statically-typed multi-stage programming language. It is then easy to show that MacroML is stage- and type-safe: macro expansion does not depend on runtime evaluation, and both stages do not "go wrong.