在Common Lisp中访问活动符号表

时间:2010-09-20 01:36:02

标签: lisp common-lisp symbol-tables

我听说Common Lisp运行时可以访问活动符号表。我误解了吗?

2 个答案:

答案 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)