有没有一种简短的方式来从一个包中导出所有符号,或者只有在defpackage
中才能完成呢?我通常在名为foo.lisp
的文件中编写代码,其中一般以(in-package :foo)
开头,并将包定义放到名为package.lisp
的文件中,其中大概会涉及以下内容:
(in-package :cl-user)
(defpackage :foo
(:use :cl)
(:documentation "Bla bla bla."
(:export :*global-var-1*
:*global-var-2*
:function-1
:function-2
:struct
:struct-accessor-fun-1
:struct-accessor-fun-2
:struct-accessor-fun-3
:struct-accessor-fun-4))
我的问题是:有时仅使用一些全局变量和函数的简单接口可能不足够,你需要导出一些结构体。当这种情况发生时,如果你不仅仅导出这个结构体的访问器函数,你将无法操作这些结构体的对象。那么,在不手动导出所有这些访问器函数的情况下,是否有一种简单的方法来实现这种效果?
defstruct
这样的宏缺少一个功能。也就是说,缺少一个开关来启用自动导出它们所创建的访问器等。 - BitTickler(eval-when (...) ...)
块中吗? - BitTickler