module-name—a string designator.
pathname-list—nil
, or
a designator
for a non-empty list of pathname designators.
The default is nil
.
provide
adds the module-name to the list held by
*modules*
, if such a name is not already present.
require
tests for the presence of the module-name in the
list held by *modules*
.
If it is present, require
immediately returns.
Otherwise, an attempt is made to load an appropriate set of files as follows:
The pathname-list argument, if non-nil,
specifies a list of pathnames to be loaded in order, from left to right.
If the pathname-list is nil
,
an implementation-dependent mechanism will be invoked in an attempt
to load the module named module-name;
if no such module can be loaded, an error of type error
is signaled.
Both functions use string=
to test for the presence of a module-name.
;;; This illustrates a nonportable use of REQUIRE, because it ;;; depends on the implementation-dependent file-loading mechanism. (require "CALCULUS") ;;; This use of REQUIRE is nonportable because of the literal ;;; physical pathname. (require "CALCULUS" "/usr/lib/lisp/calculus") ;;; One form of portable usage involves supplying a logical pathname, ;;; with appropriate translations defined elsewhere. (require "CALCULUS" "lib:calculus") ;;; Another form of portable usage involves using a variable or ;;; table lookup function to determine the pathname, which again ;;; must be initialized elsewhere. (require "CALCULUS" *calculus-module-pathname*)
provide
modifies *modules*
.
The specific action taken by require
is affected by calls to provide
(or, in general, any changes to the value of *modules*
).
Should signal an error of type type-error
if module-name is not a string designator.
If require
fails to perform the requested operation
due to a problem while interacting with the file system,
an error of type file-error
is signaled.
An error of type file-error
might be signaled if any pathname
in pathname-list is a designator for a wild pathname.
*modules*, Section 19.1.2 (Pathnames as Filenames)
The functions provide
and require
are deprecated.
If a module consists of a single package, it is customary for the package and module names to be the same.