The Common Lisp package system, designed and standardized several years ago, is not hierarchical. Since Common Lisp was standardized, other languages, including Java and Perl, have evolved namespaces which are hierarchical. This document describes a hierarchical package naming scheme for Common Lisp. The scheme was proposed by Franz Inc and implemented in their Allegro Common Lisp product; a compatible implementation of the naming scheme is implemented in CMUCL. This documentation is based on the Franz Inc. documentation, and is included with permission.
The goals of hierarchical packages in Common Lisp are:
In a nutshell, a dot (.
) is used to separate levels in package
names, and a leading dot signifies a relative package name. The choice
of dot follows Java. Perl, another language with hierarchical
packages, uses a colon (:
) as a delimiter, but the colon is
already reserved in Common Lisp. Absolute package names require no
modifications to the underlying Common Lisp implementation. Relative
package names require only small and simple modifications.