Accessing active symbol table in Common Lisp
I have heard that the active symbol table is accessible within the Common Li开发者_JAVA技巧sp runtime. Have I misunderstood?
'Symbol tables' are called 'packages' in Common Lisp. See for example: Introduction to Packages, CL HyperSpec.
Several operations over packages are available in Common Lisp: The Packages Dictionary.
Symbols can be members of packages (being 'interned').
The variable *package* holds a package as a value, which is used by several operations that use a package as a default. An example is the 'reader', which by default does a look up in the package of *package*.
You can use do-all-symbols
.
See here for a similar question. The accepted answer has some details on packages also, which is handy.
Something like this in code. Define useful-symbol-p
as you see fit:
(let ((lst ()))
(do-all-symbols (s lst)
(when (useful-symbol-p s) (push s lst)))
lst)
精彩评论