Libraries contain modules. For example, the Dylan library contains the Dylan module described earlier, the Extensions module, and possibly several other implementation-dependent modules. Note that a library and a module may share a given name. Modules with the same name may also appear in more than one library.
By default, a Dylan environment provides a library called Dylan-User for the convenience of the programmer. This is typically used for short, single library programs which depend only on modules found in the Dylan library.
Additionally, every library contains an implicit module, also known as Dylan-User, which imports all of the modules found in the Dylan library. This may be used for single module programs. Many Dylan environments, however, use it to bootstrap new library definitions. The vehicle library, for example, might be defined as follows in a Dylan-User module:
define library Vehicles use Dylan; // This is the library! export // These are modules. Vehicles, // (Defined above.) Traffic-Simulation, Crash-Testing, Inspection; // (Hypothetical.) end library Vehicles;
This library could in turn be imported by another library:
define library Vehicle-Application use Dylan; use My-GUI-Classes; use Vehicles; end;
Libraries import other libraries and export modules, whereas modules import other modules and export variables. In general, a module may import any module found in its own library or exported from a library imported by its own library. The following module, for example, could belong to the Vehicle-Application library.
define module Sample-Module // module name source library use Dylan; // Dylan use Extensions; // Dylan use Menus; // My-GUI-Classes use Vehicles; // Vehicles use Inspection; // Vehicles end module;