Common Lisp has a type of macro that I've never seen before, called a 'symbol macro'. This is like a normal macro, where you define an expansion for a symbol, but if the symbol is let-bound, it stays as a plain variable! https://clhs.lisp.se/Body/m_defi_1.htm