Permalink
Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
57 lines (31 sloc) 1.04 KB

tools.macro

RJ: This library works without modification for ClojureCLR

Tools for writing macros

macrolet: local macro definitions

Example:

(macrolet [(foo [form] `(~form ~form))]
  (foo x))

expands to (x x)

symbol-macrolet: local symbol macro definitions

Example:

(symbol-macrolet [def foo]
  (def def def))

expands to (def def foo)

defsymbolmacro, with-symbol-macros: global symbol macro definitions

Example:

(defsymbolmacro sum-2-3 (plus 2 3))
(with-symbol-macros
  (+ 1 sum-2-3))

expands to (+ 1 (plus 2 3))

mexpand-1

like clojure.core/macroexpand-1, but handles symbol macros

mexpand

like clojure.core/macroexpand, but handles symbol macros

mexpand-all

full recursive macro expansion

name-with-attributes

For writing def-like macros. Handles optional docstrings and attribute maps for a name to be defined in a list of macro arguments.

License

Copyright © 2011 Rich Hickey

Licensed under the EPL. (See the file epl.html.)