An example would be:
(defpackage :implementation-package-1 (:export ...)) (defpackage :implementation-package-2 (:export ...)) (defpackage :package-to-use (:use) (:extends :implementation-package-1 :implementation-package-2))
User code can now simply use the PACKAGE-TO-USE package and it will get all the exports of all the implementation packages.
You can also create packages which extend other packages excepting a few symbols, so you can create, for instance, custom CL-like packages, such as subsets, or CL-with-a-few-things-done-differently.
You can also `clone' packages - create another package which shares all (external and internal) symbols with an existing package.
The code was developed by Tim Bradshaw and it may be used for any purpose by anyone. It works with Allegro CL, LispWorks, CLISP, CMUCL and Symbolics Genera. The project page includes some documentation.
Topics: language extension