Common Lisp Package: ORG.TFEB.CONDUIT-PACKAGES

README:

FUNCTION

Public

RECOMPUTE-CONDUITS

Clean up the lists of conduits, and recompute all conduit packages to make them consistent

Undocumented

DELETE-PACKAGE (PACK/NAME)

EXPORT (SYMBOL/S &OPTIONAL (PACKAGE *PACKAGE*))

RENAME-PACKAGE (PACK/NAME NEW-NAME &OPTIONAL (NICKNAMES 'NIL))

UNEXPORT (SYMBOL/S &OPTIONAL (PACKAGE *PACKAGE*))

Private

Undocumented

CANONICALISE-PACKAGE-NAME (PACKAGE/NAME)

CLEAN-PACKAGE-ALIST (PA)

CLONE-PACKAGES-TO-PACKAGE (FROMS TO)

DELETE-HP-ALIAS-MAP (P)

HP-ALIAS-MAP (P)

SETFHP-ALIAS-MAP (NEW P)

MAKE-PACKAGE-CONDUIT-PACKAGE (PACKAGE/NAME &KEY EXTENDS EXTENDS/INCLUDING EXTENDS/EXCLUDING)

NOTE-CONDUIT (PACK CONDUIT)

RECOMPUTE-CONDUITS-FOR (PACK &OPTIONAL (CHAIN 'NIL))

MACRO

Public

DEFPACKAGE (NAME &BODY CLAUSES)

Define a package. See CL:DEFPACKAGE for tha basics. In addition, this version of DEFPACKAGE can define a `conduit package': that you can use as a conduit to extend existing packages. This works by importing symbols from the existing packages and then reexporting them. The syntax is as DEFPACKAGE, wiht the addition of three new clauses: (:EXTENDS package) takes package and reexports all its symbols; (:EXTENDS/INCLUDING package . syms/names) reexports only syms/names; (:EXTENDS/EXCLUDING package . syms/names) reexports all *but* syms/names. When defining a conduit package you almost certainly will want to say (:USE) to prevent the CL package being used. If hierarchical packages are loaded when conduits is built (yes, I know) Then you can also say (:ALIASES (name realname) ...) Which will cause name to be a shorthand for realname when the package Being defined is the current package. Aliases are not inherited from conduits. This version of DEFPACKAGE also support `cloning' packages: making another package which is `just like' an existing package. This means that all the internal, exported and shadowing symbols in the clone will be the same as those in the cloned package, but any additional things defined by DEFPACKAGE will also take effect. This allows you to essentially make a copy of a package which you can then use to define new functionality without interning a lot of things in the original package. Cloning is a static operation - packages do not know who their clones are, and no attempt is made to keep clones up to date. Cloning is done by the clause (:CLONES package) Cloning is not compatible with extending (this is checked). As with extending you probably want to specify (:USE) when cloning.

VARIABLE

Private

Undocumented

*CONDUIT-PACKAGE-DESCRIPTIONS*

*CONDUIT-PACKAGES*

*PACKAGE-CONDUITS*