Macro Expansion for NULLIFY
By defining the macro NULLIFY, we have actually defined a function, but it’s not named NULLIFY. It’s called the macro expansion function for NULLIFY.
When the macro NULLIFY is called, its macro expansion function is applied to the macro argument. And then that result is evaluated.
We can see the intermediate result if we use the built-in function MACROEXPAND.
> (macroexpand '(nullify total))
; Two values are returned.
; The first is the expansion itself.
; Second, we have T, since a macro form was expanded.