ToC | DocOverview | CGDoc | RelNotes | Index | PermutedIndex
| Allegro CL

| ANSI Common Lisp 24 System Construction 24.2 Dictionary of System Construction
24.2.11 provide, require | Function
  Syntax: provide module-name implementation-dependent require module-name `&optional` pathname-list implementation-dependent Arguments and Values: module-name - a string designator. pathname-list - nil, or a designator for a non-empty list of pathname designators. The default is nil. Description: 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. Examples:
      ;;; 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*)
Side Effects: provide modifies *modules*. Affected By: The specific action taken by require is affected by calls to provide (or, in general, any changes to the value of *modules*). Exceptional Situations: 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. See Also: *modules*, Section 19.1.2 Pathnames as Filenames Notes: 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. Allegro CL Implementation Details: See cl:provide and cl:require in implementation.html for information on the implementation of provide and require.

© Franz Inc. All Rights Reserved - File last updated 2022-07-25