Loading Files - MIT/GNU Scheme 7.7.91
Description: MIT/GNU Scheme 7.7.91

Next: World Images, Previous: REPL, Up: Using Scheme

### 3.2 Loading Files

To load files of Scheme code, use the procedure `load`:

— procedure: load filename [environment [syntax-table [purify?]]]

> Filename may be a string naming a file, or a list of strings naming multiple files. Environment, if given, is the environment to evaluate the file in; if not given the current REPL environment is used.

> Syntax-table is no longer used and if supplied will be ignored.

> The optional argument purify? is a boolean that says whether to move the contents of the file into constant space after it is loaded but before it is evaluated. This is performed by calling the procedure `purify` (see Garbage Collection). If purify? is given and true, this is done; otherwise it is not.

> `load` determines whether the file to be loaded is binary or source code, and performs the appropriate action. By convention, files of source code have a pathname type of `"scm"`, and files of binary SCode have pathname type `"bin"`. Native-code binaries have pathname type `"com"`. (See the description of `pathname-type` in Pathname Type (MIT/GNU Scheme Reference Manual).)

— variable+: load-noisily?

> If `load-noisily?` is set to `#t`, `load` will print the value of each expression in the file as it is evaluated. Otherwise, nothing is printed except for the value of the last expression in the file. (Note: the noisy loading feature is implemented for source-code files only.)

— variable+: load/default-types

> When load is given a pathname without a type, it uses the value of this variable to determine what pathname types to look for and how to load the file. `load/default-types` is a list of associations that maps pathname types (strings) to loader procedures. `load` tries the pathname types in the order that they appear in the list. The initial value of this variable has pathname types in this order:

>               "com" "so" "sl" "bin" "scm"

> This means that, for example, (load "foo") will try to load foo.com first, and foo.scm only after looking for and failing to find the other pathname types.

All pathnames are interpreted relative to a working directory, which is initialized when Scheme is started. The working directory can be obtained by calling the procedure `pwd` or modified by calling the procedure `cd`; see Working Directory (MIT/GNU Scheme Reference Manual). Files may be loaded when Scheme first starts; see the --load command-line option for details.

— procedure+: load-option symbol [no-error?]

> Loads the option specified by symbol; if already loaded, does nothing. Returns symbol; if there is no such option, an error is signalled. However, if no-error? is specified and true, no error is signalled in this case, and `#f` is returned.

> A number of built-in options are defined:

> `compress`
>   Support to compress and uncompress files. Undocumented; see the source file runtime/cpress.scm. Used by the runtime system for compression of compiled-code debugging information.
> `format`
>   The `format` procedure. See Format (MIT/GNU Scheme Reference Manual).
> `gdbm`
>   Support to access `gdbm` databases. Undocumented; see the source files runtime/gdbm.scm and microcode/prgdbm.c.
> `hash-table`
>   The hash-table data type. See Hash Tables (MIT/GNU Scheme Reference Manual).
> `ordered-vector`
>   Support to search and do completion on vectors of ordered elements. Undocumented; see the source file runtime/ordvec.scm.
> `rb-tree`
>   The red-black tree data type. See Red-Black Trees (MIT/GNU Scheme Reference Manual).
> `regular-expression`
>   Support to search and match strings for regular expressions. See Regular Expressions (MIT/GNU Scheme Reference Manual).
> `stepper`
>   Support to step through the evaluation of Scheme expressions. Undocumented; see the source file runtime/ystep.scm. Used by the Edwin command `step-expression`.
> `subprocess`
>   Support to run other programs as subprocesses of the Scheme process. Undocumented; see the source file runtime/process.scm. Used extensively by Edwin.
> `synchronous-subprocess`
>   Support to run synchronous subprocesses. See Subprocesses (MIT/GNU Scheme Reference Manual).
> `wt-tree`
>   The weight-balanced tree data type. See Weight-Balanced Trees (MIT/GNU Scheme Reference Manual).

In addition to the built-in options, you may define other options to be loaded by `load-options` by modifying the file optiondb.scm on the library path. An example file is included with the distribution; normally this file consists of a series of calls to the procedure `define-load-option`, terminated by the expression

         (further-load-options standard-load-options)

— procedure+: define-load-option symbol thunk ...

> Each thunk must be a procedure of no arguments. Defines the load option named symbol. When the procedure `load-option` is called with symbol as an argument, the thunk arguments are executed in order from left to right.