Why is Gambit's source code so completely full of DEFINE-PRIM, and names beginning with ## or MACRO-, some of which are macros and some of which are essentially just procedures implemented as macros? This makes the code very hard to follow, because it is visually distracting for every nth token to be ## or MACRO and because so many macros make it hard to remember what constructs follow different evaluation rules.