macro
wraps a procedure as a macro
Usage:
(macro func)Converts a procedure into a macro value. The procedure receives the unevaluated input forms and returns expanded code. In most user code, define-macro is the more convenient interface.
An Example
(define twice
(macro (lambda (form) `(+ ,form ,form))))