References: MACROEXPAND, MACROEXPAND-1
Edit History: V1, 29 Oct 1989, Sandra Loosemore
CLtL says that the second value returned by MACROEXPAND and
MACROEXPAND-1 is T if the argument form is a macro call. Presumably
this is also the case for COMPILER-MACROEXPAND and
COMPILER-MACROEXPAND-1, since these functions are intended to be "just
like" their counterparts. Specifying a return value of T is
inconsistent with other predicates in the language, where a return
value of "true" is normally specified instead.
Change the specification so that the second return value from
MACROEXPAND, MACROEXPAND-1, COMPILER-MACROEXPAND, and
COMPILER-MACROEXPAND-1 is a boolean instead of one of the symbols T or
NIL. In other words, if the form represents a macro call (or a
compiler macro call, as appropriate), the second return value is true.
This is more consistent with other predicates in the language.
Presumably all conforming implementations now return T.
Cost to implementors:
None, except possibly for the cost of changing documentation.
Cost to users:
It seems unlikely that user programs would explicitly test for the
return value being T, or otherwise depend on this.
Increased consistency in the language design.
In some implementations, there is a slight performance advantage in
allowing the return values from predicates to be any non-NIL value
instead of the symbol T. Some functions such as MEMBER are required
to return a particular truth value that conveys extra information back
to the caller, but there doesn't appear to be similar motivation for
making an exception to the general rule in this situation.