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

Re: Issue: PUSH-EVALUATION-ORDER (Version 3)

I'm a little uneasy about "Explicitly state that for the macros
CHECK-TYPE, ASSERT, CTYPECASE, and CCASE, that rule is followed except
where CLtL specifies to the contrary."

I think that we also have to be careful about the following: suppose a
user defines

(defmacro wrong-order (x y) `(get ,y ,x))

If the user writes (push a (wrong-order (frob) (baz)))

are we willing to guarantee that "the subforms of the macro call
(including but not limited to subforms of the generalized variable
reference) are evaluated exactly as many times as they appear in the
source program, and in exactly the same order as they appear in the
source program. "?

Similarly if the user writes an "incorrect" setf-method, e.g.,

(defsetf wrong-order (x y) (z) `(setf (get ,y ,x) ,z))

I wish this weren't so sticky. . . .