SYMBOL-MACROLET-DECLARE(with-slots (rho theta) point (declare (single-float rho theta)) ...computation...)
SYMBOL-MACROLET, and hence in WITH-ACCESSORS and WITH-SLOTS. Exactly the same declarations are allowed as for LET, with one exception: SYMBOL-MACROLET signals an error if a SPECIAL declaration names one of the symbols being defined as a symbol-macrolet. A type declaration of one of these symbols is equivalent to wrapping a THE expression around the expansion of that symbol.SYMBOL-MACROLET is intended to resemble LET in syntax, it ought to allow declarations. When writing a SYMBOL-MACROLET directly, the user could just as easily write a THE expression instead of a type declaration. However, when invoking a macro such as WITH-SLOTS that expands into SYMBOL-MACROLET, the user does not have this option since the expansion is not supplied explicitly by the user.SYMBOL-MACROLET was only tentatively added to Common Lisp 3 months ago.SYMBOL-MACROLET-SEMANTICS.
"A macro-definition for SYMBOL-MACROLET would leave the issue of DECLARE open. But the special-form version of SYMBOL-MACROLET really should address it."