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


Aha, I think greek misled us, and smh is right.
The names of the features are interned identifiers (symbols), which
are used only for their data-matching value, i.e. exactly like keywords.
The list which contains all current features, *FEATURES*, is a normal
identifier which shouldn't be in the keyword package, it should be
in LISP or SI or somesuch system package. Now that makes it harder to
handle ad hoc keywords that aren't yet registered and thus might have
conflicting names with features in other user software that may or may not
have been registered. Perhaps the registered features should be keywords
and the unregistered ones should be in private experimental packages, but
all of them should be consed onto the list LISP:*FEATURES* or whatever it is?
Having the unregistered feature names in private packages is wasteful because
they have things like value cells etc. whereas true keywords can actually
be in a special package that doesn't even have hooks for values etc.,
but this inefficient use of fullblown identifiers (symbols) for just
their keyword semantics is temporary until they become registered.