Macros and their Impact on Language Design