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

Re: do-xxx-symbols

There are at least four reasons why the description of DO-SYMBOLS does
not appear to include symbols in used packages:

1) "do-symbols provides straightforward iteration over the symbols
of a package".  Searching all the used packages is not straightforward
iteration over the package.

2) There is an implication that UNINTERN can be called to remove symbols
from the package.  UNINTERN'ing a symbol in a used package does not
exactly remove it from the package under discussion.

3) It is said that every symbol is processed once.  In DO-ALL-SYMBOLS
there is an explicit warning that symbols may occur more than once. The
implication is that this is not true for DO-SYMBOLS.  If DO-SYMBOLS
was supposed to look at used packages, then the same warning would
apply to it.

4) DO-EXTERNAL-SYMBOLS says that it is like DO-SYMBOLS, but only
the external symbols of the specified package are used.  The wording
of DO-EXTERNAL-SYMBOLS seems to imply even more clearly that only
the specified package is scanned, not any used packages.  It also seems
to imply that DO-SYMBOLS does the same thing, but for both internal and
external symbols.

Can we get an authoritative statement about what is covered by
DO-SYMBOLS and DO-EXTERNAL-SYMBOLS, and about whether duplicates and
shadowed symbols should be removed?  I think this question is
separate from the APROPOS question.  APROPOS with no argument is
documented as using DO-ALL-SYMBOLS.  But with an argument it is not
said to use DO-SYMBOLS.  So it would be perfectly acceptable to
say that DO-SYMBOLS looks only at the symbols in a particular 
package, whereas APROPOS following the used chain.  (Indeed that is
what I have done for the moment.)