manpagez: man pages & more
info guile
Home | html | info | man
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.17.6 Loading Scheme Code from File

Scheme Procedure: load filename [reader]

Load filename and evaluate its contents in the top-level environment. The load paths are not searched.

reader if provided should be either #f, or a procedure with the signature (lambda (port) …) which reads the next expression from port. If reader is #f or absent, Guile’s built-in read procedure is used (see section Reading Scheme Code).

The reader argument takes effect by setting the value of the current-reader fluid (see below) before loading the file, and restoring its previous value when loading is complete. The Scheme code inside filename can itself change the current reader procedure on the fly by setting current-reader fluid.

If the variable %load-hook is defined, it should be bound to a procedure that will be called before any code is loaded. See documentation for %load-hook later in this section.

Scheme Procedure: load-compiled filename

Load the compiled file named filename. The load paths are not searched.

Compiling a source file (see section Reading and Evaluating Scheme Code) and then calling load-compiled on the resulting file is equivalent to calling load on the source file.

Scheme Procedure: load-from-path filename

Similar to load, but searches for filename in the load paths. Preferentially loads a compiled version of the file, if it is available and up-to-date.

Scheme Procedure: primitive-load filename
C Function: scm_primitive_load (filename)

Load the file named filename and evaluate its contents in the top-level environment. The load paths are not searched; filename must either be a full pathname or be a pathname relative to the current directory. If the variable %load-hook is defined, it should be bound to a procedure that will be called before any code is loaded. See the documentation for %load-hook later in this section.

C Function: SCM scm_c_primitive_load (const char *filename)

scm_primitive_load, but taking a C string instead of an SCM.

Scheme Procedure: primitive-load-path filename [exception-on-not-found]
C Function: scm_primitive_load_path (filename)

Search %load-path for the file named filename and load it into the top-level environment. If filename is a relative pathname and is not found in the list of search paths, an error is signalled. Preferentially loads a compiled version of the file, if it is available and up-to-date.

By default or if exception-on-not-found is true, an exception is raised if filename is not found. If exception-on-not-found is #f and filename is not found, no exception is raised and #f is returned. For compatibility with Guile 1.8 and earlier, the C function takes only one argument, which can be either a string (the file name) or an argument list.

Scheme Procedure: %search-load-path filename
C Function: scm_sys_search_load_path (filename)

Search %load-path for the file named filename, which must be readable by the current user. If filename is found in the list of paths to search or is an absolute pathname, return its full pathname. Otherwise, return #f. Filenames may have any of the optional extensions in the %load-extensions list; %search-load-path will try each extension automatically.

Variable: current-reader

current-reader holds the read procedure that is currently being used by the above loading procedures to read expressions (from the file that they are loading). current-reader is a fluid, so it has an independent value in each dynamic root and should be read and set using fluid-ref and fluid-set! (see section Fluids and Dynamic States).

Changing current-reader is typically useful to introduce local syntactic changes, such that code following the fluid-set! call is read using the newly installed reader. The current-reader change should take place at evaluation time when the code is evaluated, or at compilation time when the code is compiled:

 
(eval-when (compile eval)
  (fluid-set! current-reader my-own-reader))

The eval-when form above ensures that the current-reader change occurs at the right time.

Variable: %load-hook

A procedure to be called (%load-hook filename) whenever a file is loaded, or #f for no such call. %load-hook is used by all of the above loading functions (load, load-path, primitive-load and primitive-load-path).

For example an application can set this to show what’s loaded,

 
(set! %load-hook (lambda (filename)
                   (format #t "Loading ~a ...\n" filename)))
(load-from-path "foo.scm")
-| Loading /usr/local/share/guile/site/foo.scm ...
Scheme Procedure: current-load-port
C Function: scm_current_load_port ()

Return the current-load-port. The load port is used internally by primitive-load.

Variable: %load-extensions

A list of default file extensions for files containing Scheme code. %search-load-path tries each of these extensions when looking for a file to load. By default, %load-extensions is bound to the list ("" ".scm").


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]
© manpagez.com 2000-2026
Individual documents may contain additional copyright information.