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.
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.
(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.
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.
(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.
Define a macro that expands into forms after replacing the symbols in params (a vector) by the corresponding parameters given in the macro call.
(macrolet fn-bindings & exprs)
Define local macros that are used in the expansion of exprs. The syntax is the same as for letfn forms.
Define local macros that are used in the expansion of exprs. The syntax is the same as for letfn forms.
(mexpand form)
Like clojure.core/macroexpand, but takes into account symbol macros.
Like clojure.core/macroexpand, but takes into account symbol macros.
(mexpand-1 form)
Like clojure.core/macroexpand-1, but takes into account symbol macros.
Like clojure.core/macroexpand-1, but takes into account symbol macros.
(mexpand-all form)
Perform a full recursive macro expansion of a form.
Perform a full recursive macro expansion of a form.
(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.
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.
(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.
Define local symbol macros that are used in the expansion of exprs. The syntax is the same as for let forms.
(with-symbol-macros & exprs)
Fully expand exprs, including symbol macros.
Fully expand exprs, including symbol macros.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close