如何在lisp中找到类的包?

时间:2012-02-21 01:02:32

标签: lisp package common-lisp clos

假设我想知道在哪个包中定义了一个类,例如say(defclass x()())在p1中定义。一种方法是通过(symbol-package'x)获取包。该解决方案的问题是x被导出到不同的包p2中。还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

正如Rainer Joswig所说,课程没有在课程中定义;符号有包,类的名称是符号。

如果你想知道类定义读取,编译或加载时*PACKAGE*的值(可以想象是三个不同的值),我不相信有任何方法可以检索它,除非你编写代码来存储它。

此外,它似乎不是一个有意义的信息。包只是符号的命名空间,并且没有理由在读取,编译或加载类定义时当前的包应该与类本身有任何关系。

但是,如果您真正想要的是类x的名称驻留在包p1中,但是p2导出它,您可能有兴趣将x添加到其{的shadow列表中{ {3}}形式(或之后)。