3 ms·
In Common Lisp, we sort of get this by the separation of exported versus unexported package symbols. Unexported package symbols do two things: - when visibili
by kazinator 1y ago
In Common Lisp, we sort of get this by the separation of exported versus unexported package symbols.
Unexported package symbols do two things:
- when visibility "windows" are created between packages via the "use" mechanism, unexported symbols are excluded.
- unexported symbols require tokens with two colons: you have to write foo::bar, not just foo:bar, to refer to bar if it is unexported from package foo; moreover you must still write foo::bar even if you are using package foo, whereas if it were exported, you would just write bar.
CLOS uses symbols for naming entities like generic functions, classes and slots. It has no additional protection mechanisms beyond what the symbols provide, and symbols are agnostic of classes (and everything/anything else which they name).