Next: Finding Guile Modules, Previous: Why Modules, Up: Modules
A Guile module is a collection of named procedures, variables and macros, altogether called the bindings, since they bind, or associate, a symbol (the name) to a Scheme object (procedure, variable, or macro). Within a module, all bindings are visible. Certain bindings can be declared public, in which case they are added to the module's so-called export list; this set of public bindings is called the module's public interface.
For client code to use a module, the module must be found and loaded. The first step translates a module name to the name of a file (or set of files) where the module's implementation resides (see Finding Guile Modules), and the second step loads that implementation code into the current program, making the public interface available to the client in the process (see Loading Guile Modules).
The client may access the public interface, or may alternatively specify a custom interface in which case the client can select which bindings to access and can also algorithmically rename bindings. See Using Guile Modules.
A module may be implemented as Scheme code (machine-independent human-readable text), a compiled-code module (a specially-prepared shared object library), or some combination of these basic techniques, as long as the result can produce a public interface. See Creating Guile Modules.
Please note that there are some problems with the current module system you should keep in mind (see Module System Quirks). We hope to address these eventually.