Load filename and evaluate its contents in the top-level environment.
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#for absent, Guile's built-inreadprocedure is used (see Scheme Read).The reader argument takes effect by setting the value of the
current-readerfluid (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 settingcurrent-readerfluid.If the variable
%load-hookis defined, it should be bound to a procedure that will be called before any code is loaded. See documentation for%load-hooklater in this section.
Load the compiled file named filename.
Compiling a source file (see Read/Load/Eval/Compile) and then calling
load-compiledon the resulting file is equivalent to callingloadon the source file.
Load the file named filename and evaluate its contents in the top-level environment. filename must either be a full pathname or be a pathname relative to the current directory. If the variable
%load-hookis defined, it should be bound to a procedure that will be called before any code is loaded. See the documentation for%load-hooklater in this section.
scm_primitive_load, but taking a C string instead of anSCM.
current-readerholds the read procedure that is currently being used by the above loading procedures to read expressions (from the file that they are loading).current-readeris a fluid, so it has an independent value in each dynamic root and should be read and set usingfluid-refandfluid-set!(see Fluids and Dynamic States).Changing
current-readeris typically useful to introduce local syntactic changes, such that code following thefluid-set!call is read using the newly installed reader. Thecurrent-readerchange 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-whenform above ensures that thecurrent-readerchange occurs at the right time.
A procedure to be called
(%load-hookfilename)whenever a file is loaded, or#ffor no such call.%load-hookis used by all of the loading functions (loadandprimitive-load, andload-from-pathandprimitive-load-pathdocumented in the next section).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 ...