Think about a (virtual) hierarchical package structure. Since Common Lisp standard has just a flat package system, the three packages are naturally at the same level, but you can regard the packages constituting a hierarchy virtually.
FOO-package - FOO-PACKAGE.BAR - FOO-PACKAGE.BAZ
Here, their definitions are:
If you want reexport external symbols in FOO-PACKAGE.BAR and FOO-PACKAGE.BAZ from FOO-PACKAGE, you may just write as below:
:INCLUDE and :EXCLUDE options
You can also reexport the only symbols you specify or the symbols other than you specify using :INCLUDE option or :EXCLUDE option. Since they are exclusive, you can not use :INCLUDE option and :EXCLUDE option at the same time.
You can install
cl-reexport via Quicklisp:
Difference from ASDF 3's one-package-per-file functionality
ASDF 3 has one-package-per-file functionality and its runtime support. The structural difference between (virtual) hierarchical packages and ASDF 3's one-package-per-file functionality is:
- (Virtual) hierarchical packages have one system definition and several packages constitute a hierarchical structure.
- ASDF 3's one-package-per-file style has hierarchical system definitions and hierarchical packages, which are corresponding each other.