我听说Common Lisp运行时可以访问活动符号表。我误解了吗?
答案 0 :(得分:8)
'符号表'在Common Lisp中称为'包'。例如,请参阅:Introduction to Packages, CL HyperSpec。
Common Lisp中提供了一些针对包的操作:The Packages Dictionary。
Symbols可以是包的成员(被“实习”)。
变量*package*将包作为值保存,由多个使用包作为默认值的操作使用。一个例子是'reader',默认情况下会在* package *的包中查找。
答案 1 :(得分:6)
您可以使用do-all-symbols
。
有关类似问题,请参阅here。接受的答案也有关于包裹的一些细节,这很方便。
代码中有这样的东西。根据需要定义useful-symbol-p
:
(let ((lst ()))
(do-all-symbols (s lst)
(when (useful-symbol-p s) (push s lst)))
lst)