Title: Debugging Hygienic Macros
Summary: The paper presents the first debugger for Scheme macro system. The first section is a good introduction to macros, the differences between Lisp macros and Scheme macros, etc. The second section first gives three principles of Scheme macros. The first principle is that macros are rewriting rules. The paper shows how the debugger expand the macros in a user interface. The second principle is that macros respect lexical scoping. This is required for a macro expansion to be hygienic. Two conditions are presented. For this principle, the debugger uses highlighted words and arrows to show the expansion. The third principle is macros define layered abstractions. The debugger also shows a way to step into that. Section 3 then discusses three support for macro expansion: expand, expand-once and expand-only. The differences are also compared. Section 4 presents how to implement the debugger in several steps. Section 5 provides a formal model to prove the correctness of this implementation.
Things I understood: understand the macros and the basic principles for designing a macro.
Things I have trouble understanding: not very clear about the formal model in section 5.
Title: Fortifying Macros
Summary: This paper starts with an example of how to transform let macro to lambda expression. The author claims that macros are used to extend the front end to compiler. The author also explains that the procedure how compiler expand the macro with syntax transformer. From section 2, the paper keeps using the previous example to show how MBE system parses the macro code. The shortcomings of MBE are further discussed. The paper then describes the design of dubbed syntax-parse -- the system introduced in this paper, and two steps to report errors: first, selecting the most appropriate error; second, reporting the error by pinpointing the faulty term and describing the fault of stating the expected class of syntax. The paper then discusses the syntax patterns in section 5. The paper compares this system with MBE and claims that this system is more powerful. In study cases, the paper uses examples to show how this system works.
Things I understood: understand the motivation and how MBE fails in parsing macros.
Things I have trouble understanding: not very clear about the syntax in section 5.