DEFMACRO-BLOCK-SCOPEBLOCK that surrounds the body of DEFMACRO, MACROLET, DEFINE-SETF-METHOD, DEFTYPE, and DEFINE-COMPILER-MACRO (the forms that define functional objects that also support destructuring) include the bindings of the variables in the destructuring pattern? In other words, is the BLOCK visible during the evaluation of initialization forms included in the lambda list?
It seems clear that in forms such as DEFUN which do not support destructuring, the BLOCK surrounds only the body and includes none of the lambda-variable binding forms.
There are two proposals, INCLUDES-BINDINGS and EXCLUDES-BINDINGS.
BLOCK in the functions defined by the forms listed above does include the initialization forms within the lambda list as well as the body forms.LET* or DESTRUCTURING-BIND construct), which would be inside the scope of the BLOCK in an ordinary function-defining form. Some users might find this behavior marginally more useful than the other alternative.BLOCK in the functions defined by the forms listed above includes only the body forms and not the initialization forms within the lambda list.AUX variables), which would be outside the scope of the BLOCK in an ordinary function-defining form. Some people might find this to be more consistent with the scoping of the BLOCK in the non-destructuring cases.CL, Utah CL, and CMU Common Lisp currently implement proposal INCLUDES-BINDINGS. Kyoto CL implements proposal EXCLUDES-BINDINGS.