Macroexpansion
When the evaluator sees (incf a)
- It notices that INCF names a macro
- It “runs” or macroexpands the macro, which transforms the line of code into:
- It evaluates that expression instead
- So when you type (incf a) to the lisp listener, it is as if you had typed (setf a (+ 1 a))