Summary: First, we talked about the consequences of quoting parts of a program. Example of how if something is quoted in a program, it’s more difficult to optimize. Then we went over an example of a macro that checks if two programs are identical at run time. Then we showed how to turn it into something that evaluates at compile time. We threw in an unbound identifier to demonstrate this. Then we discussed why this macro had to be written in continuation-passing style. Then we talked about how the macro compares its input in order to determine whether or not something was an identifier. Then we moved on to discuss the hygiene conditions and we used the loop example in order to demonstrate them. The point of the paper was to demonstrate that hygiene isn’t exactly what people wanted to do. Then we talked about the restrictions of that programming style associated with writing hygienic macros and how that style was confusing. Then we talked about how to write macros using e-pick (calling one thing on success and the other on failure). In this style, the calls to functions are explicit as opposed to implicit. Then we talked about alpha-renaming and the ways it could be used. Then we discussed that when you are writing a macro, alpha-renaming should not be violated.
Something I learned: I learned that alpha-renaming is a useful tool for various algorithms. It then dawned on me it could also be used in different kinds of model-checking algorithms.
Lingering Questions: So did the author actually present any ways of improving the situation? I understood that he suggested focusing on alpha-renaming, and showed weaknesses in hygiene conditions, but did he actually contribute anything to growing or improving the way macros are evaluated?