b* binder to produce macrolet forms.
Example:
(b* (((macro (add a b)) `(+ ,a ,b))) (add x y))
More generally,
(b* (((macro (name arg1 ... argn)) body-form)) result-form)
expands to
(macrolet ((name (arg1 ... argn) body-form)) result-form)
You can also provide an
(b* (((macro inline (add a b)) `(+ ,a ,b))) (add 3 4)) (b* (((macro notinline (add a b)) `(+ ,a ,b))) (add 3 4))
Either of these results in a suitable declare form for the macro, although these are unlikely to have any effect (see macrolet).