`uiop/package:define-package` 和 `defpackage` 之间的区别?
Difference between `uiop/package:define-package` and `defpackage`?
在带有 ASDF 的 Common Lisp 中,uiop/package
中的 define-package
和 defpackage
宏有什么区别?
UIOP 的条款更多。
https://common-lisp.net/project/asdf/uiop.html#UIOP_002fPACKAGE
define-package supports the following keywords: use, shadow, shadowing-import-from, import-from, export, intern -- as per cl:defpackage.
那些是相同的。但是文档字符串的其余部分介绍了更多:recycle
、mix
、reexport
…
我使用了 reexport
这使得以下操作更容易:您不想完全 use
包 A(例如,Alexandria)。您想要导入几个符号(很简单,使用 import-from
),并且您还想导出它们(也很简单,使用 export
)。但在这样做时,你必须写两次符号。 reexport
保存重复。
我听到有人抱怨 defpackage 在某些情况下无法重新加载包,define-package 工作正常,但我没有遇到这种情况。
在带有 ASDF 的 Common Lisp 中,uiop/package
中的 define-package
和 defpackage
宏有什么区别?
UIOP 的条款更多。
https://common-lisp.net/project/asdf/uiop.html#UIOP_002fPACKAGE
define-package supports the following keywords: use, shadow, shadowing-import-from, import-from, export, intern -- as per cl:defpackage.
那些是相同的。但是文档字符串的其余部分介绍了更多:recycle
、mix
、reexport
…
我使用了 reexport
这使得以下操作更容易:您不想完全 use
包 A(例如,Alexandria)。您想要导入几个符号(很简单,使用 import-from
),并且您还想导出它们(也很简单,使用 export
)。但在这样做时,你必须写两次符号。 reexport
保存重复。
我听到有人抱怨 defpackage 在某些情况下无法重新加载包,define-package 工作正常,但我没有遇到这种情况。