Macro Expansion
The macro expansion function is applied to the macro arguments. We can see these intermediate results if we use the built-in function MACROEXPAND.
> (macroexpand '(push 5 s))
(IF (NULL S) (SETQ S '(5)) (SETQ S (CONS 5 S)))
;2nd value is T since a macro form was expanded