[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: DECLARE-MACROS (Version 2) Volunteer wanted.

At X3J13, the discussion of this issue led me to believe that we should
do a more extensive job of surveying current uses of macros that expand
into declare and the alternative syntactic forms that we might provide. 

For example, several folks spoke of providing a single macro, e.g.,
(inner), that expanded into a (declare (optimize ...)) for those "inner"
routines that they wanted to turn type checking off locally.

(defun foo (a b c) (inner) ...)

(defun frob (a b c) ...)

(defun another (args) (inner) ...)

I suggested another alternative which was to

(defmacro inner (&rest body) `(locally (Declare (optimize ...)) ,@body))

and then wrapping the entire DEFUN, e.g.,


(defun foo (a b c) ...)


I'd appreciate some help from those who surveyed their user community to
expand the alternatives. (Probably the simplest way to organize this is
to put in the "Cost to users" section that alternatives exist, and then
to elaborate them in the Discussion section.)

- - - -- - 

Second, there was some enough mention of the destructive-macro-caching
example that we should probably put it back in as another justification
for this proposal. Also, the fact that a straightforward expansion of

(my-let (var1) (my-let (var2) (my-let (var3) ...)))

might result in 2â??n macro expansions of the innermost form.