API for clojure.tools.macro
-
by Konrad Hinsen
Full namespace name:
clojure.tools.macro
Overview
Local macros and symbol macros
Local macros are defined by a macrolet form. They are usable only
inside its body. Symbol macros can be defined globally
(defsymbolmacro) or locally (symbol-macrolet). A symbol
macro defines a form that replaces a symbol during macro
expansion. Function arguments and symbols bound in let
forms are not subject to symbol macro expansion.
Local macros are most useful in the definition of the expansion
of another macro, they may be used anywhere. Global symbol
macros can be used only inside a with-symbol-macros form.
Public Variables and Functions
macro
Usage: (defsymbolmacro symbol expansion)
Define a symbol macro. Because symbol macros are not part of
Clojure's built-in macro expansion system, they can be used only
inside a with-symbol-macros form.
Source
macro
Usage: (deftemplate name params & forms)
Define a macro that expands into forms after replacing the
symbols in params (a vector) by the corresponding parameters
given in the macro call.
Source
macro
Usage: (macrolet fn-bindings & exprs)
Define local macros that are used in the expansion of exprs. The
syntax is the same as for letfn forms.
Source
function
Usage: (mexpand form)
Like clojure.core/macroexpand, but takes into account symbol macros.
Source
function
Usage: (mexpand-1 form)
Like clojure.core/macroexpand-1, but takes into account symbol macros.
Source
function
Usage: (mexpand-all form)
Perform a full recursive macro expansion of a form.
Source
function
Usage: (name-with-attributes name macro-args)
To be used in macro definitions.
Handles optional docstrings and attribute maps for a name to be defined
in a list of macro arguments. If the first macro argument is a string,
it is added as a docstring to name and removed from the macro argument
list. If afterwards the first macro argument is a map, its entries are
added to the name's metadata map and the map is removed from the
macro argument list. The return value is a vector containing the name
with its extended metadata map and the list of unprocessed macro
arguments.
Source
macro
Usage: (symbol-macrolet symbol-bindings & exprs)
Define local symbol macros that are used in the expansion of exprs.
The syntax is the same as for let forms.
Source
macro
Usage: (with-symbol-macros & exprs)
Fully expand exprs, including symbol macros.
Source