Next: , Previous: Feature, Up: The Library System


1.2 Require

SLIB creates and maintains a catalog mapping features to locations of files introducing procedures and syntax denoted by those features.

— Variable: *catalog*

Is an association list of features (symbols) and pathnames which will supply those features. The pathname can be either a string or a pair. If pathname is a pair then the first element should be a macro feature symbol, source, compiled, or one of the other cases described in Library Catalogs. The cdr of the pathname should be either a string or a list.

At the beginning of each section of this manual, there is a line like (require 'feature). The Scheme files comprising SLIB are cataloged so that these feature names map to the corresponding files.

SLIB provides a form, require, which loads the files providing the requested feature.

— Procedure: require feature

There is a related form require-if, used primarily for enabling compilers to statically include modules which would be dynamically loaded by interpreters.

— Procedure: require-if condition feature

Requires feature if condition is true.

The random module uses require-if to flag object->string as a (dynamic) required module.

     (require 'byte)
     (require 'logical)
     (require-if 'compiling 'object->string)

The batch module uses require-if to flag posix-time as a module to load if the implementation supports large precision exact integers.

     (require-if '(and bignum compiling) 'posix-time)

The catalog can also be queried using slib:in-catalog?.

— Function: slib:in-catalog? feature

Returns a CDR of the catalog entry if one was found for the symbol feature in the alist *catalog* (and transitively through any symbol aliases encountered). Otherwise, returns #f. The format of catalog entries is explained in Library Catalogs.