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

Issue: HASH-TABLE-PACKAGE-GENERATORS (version 5)



This is all fine with me now, except for one odd addition you made: the
additional return value for the iterator over packages.  Whereas it
used to be:

    An invocation (<next-fn>) returns three values as follows:
      ;;    1. a boolean indicating whether an entry is returned (T says yes)
      ;;    2. a symbol (available in the indicated package)
      ;;    3. the availability type for that symbol; i.e. one of
      ;;       :INTERNAL, :EXTERNAL, or :INHERITED,  or unspecified for 
      ;;       the DO-ALL-SYMBOLS case.
      . . . 

it is now:

    An invocation (<next-fn>) returns four values as follows:
      ;;    1. a boolean indicating whether a symbol is returned (T says yes)
      ;;    2. a symbol (accessible in the indicated package)
      ;;    3. a package (in which the symbol is accessible)
      ;;    4. the accessibility type for that symbol; i.e. one of
      ;;       :INTERNAL, :EXTERNAL, or :INHERITED
      . . . 

First off, I much prefer that such information be passed as the 4th
value, rather than disturbing the original ordering (since I have code
that needs the accessibility type, particularly when doing DO-SYMBOLS;
but never have code that needs merely "a package").  But of what value
is it anyway?  simply saying that it is "a package" in which the symbol
is "accessible" doesn't really tell one anything important.  For example,
in DO-SYMBOLS over package FOO, a given symbol may be inheritable from
three distinct packages "used" by FOO; but your prescription here makes
it legal simply to return FOO each time.  Maybe you meant "present"
rather than "accessible"?  Even then, I'm not sure how you would specify
it to mean what I suspect you want it to mean.



-- JonL --