Advisor(s)
Matthias Felleisen
Contributor(s)
Mitchel Wand, Olin Shivers, Matthew Flatt
Date of Award
2010
Date Accepted
4-2010
Degree Grantor
Northeastern University
Degree Level
Ph.D.
Degree Name
Doctor of Philosophy
Department or Academic Unit
College of Computer and Information Science. Department of Computer Science.
Keywords
computer science, macros, Scheme, syntactic abstraction
Subject Categories
Macroprogramming
Disciplines
Computer Sciences
Abstract
Over the past two decades, Scheme macros have evolved into a powerful API for the compiler front-end. Like Lisp macros, their predecessors, Scheme macros expand source programs into a small core language; unlike Lisp systems, Scheme macro expanders preserve lexical scoping, and advanced Scheme macro systems handle other important properties such as source location. Using such macros,Scheme programmers now routinely develop the ultimate abstraction: embedded domain-specific programming languages. Unfortunately, a typical Scheme programming environment provides little support for macro development. The tools for understanding macro expansion are poor, which makes it difficult for experienced programmers to debug their macros and for novices to study the behavior of macros. At the same time, the language for specifying macros is limited in expressive power, and it fails to validate syntactic correctness of macro uses. This dissertation presents tools for macro development that specifically address these two needs. The first is a stepping debugger specialized to the pragmatics of hygienic macros. The second is a system for writing macros and specifying syntax that automatically validates macro uses and reports syntax errors.
Document Type
Dissertation
Rights Holder
Ryan Culpepper
Permanent URL
Recommended Citation
Culpepper, Ryan, "Refining syntactic sugar: tools for supporting macro development" (2010). Computer Science Dissertations. Paper 11. http://hdl.handle.net/2047/d20000332
Click button above to open, or right-click to save.
