HOPL-II The second ACM SIGPLAN conference on History of programming languages
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Macros as multi-stage computations: type-safe, generative, binding macros in MacroML
Proceedings of the sixth 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
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
Functor Categories and Two-Level Languages
FoSSaCS '98 Proceedings of the First International Conference on Foundations of Software Science and Computation Structure
Natural Semantics and Some of Its Meta-Theory in Elf
ELP '99 Proceedings of the Second International Workshop on Extensions of Logic Programming
A temporal-logic approach to binding-time analysis
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Multistage programming: its theory and applications
Multistage programming: its theory and applications
Normalization by evaluation for the computational lambda-calculus
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
A monadic multi-stage metalanguage
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Synthesizable high level hardware descriptions
New Generation Computing
Syntactic abstraction in component interfaces
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Static consistency checking for Verilog wire interconnects
Higher-Order and Symbolic Computation
Hi-index | 0.00 |
Recent work proposed defining type-safe macros via interpretation into a multi-stage language. The utility of this approach was illustrated with a language called MacroML, in which all type checking is carried out before macro expansion. Building on this work, the goal of this paper is to develop a macro language that makes it easy for programmers to reason about terms locally. We show that defining the semantics of macros in this manner helps in developing and verifying not only type systems for macro languages but also equational reasoning principles. Because the MacroML calculus is sensetive to renaming of (what appear locally to be) bound variables, we present a calculus of staged notational definitions (SND) that eliminates the renaming problem but retains MacroML's phase distinction. Additionally, SND incorporates the generality of Griffin's account of notational definitions. We exhibit a formal equational theory for SND and prove its soundness.