Backquote and Comma Syntax
Allows the body of a macro to look like the expanded form.
> (define-macro (push element stack)
‘(if (null? ,stack) (set! ',stack '(,element))
(set! ,stack (cons ,element ,stack)) ) )
>(macroexpand '(push 5 s))
(IF (NULL? S)(SET! 'S '(5))(SET! S (CONS 5 S)))
Backquote is like QUOTE but it allows subexpressions preceded by a comma to be evaluated.