| www.delorie.com/gnu/docs/guile/guile_356.html | search |
![]() Buy GNU books! | |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To use a Guile module is to access either its public interface or a
custom interface (see section 31.3.1 General Information about Modules). Both
types of access are handled by the syntactic form use-modules,
which accepts one or more interface specifications and, upon evaluation,
arranges for those interfaces to be available to the current module.
This process may include locating and loading code for a given module if
that code has not yet been loaded, following %load-path (see section 33.1 Configuration, Build and Installation).
An interface specification has one of two forms. The first variation is simply to name the module, in which case its public interface is the one accessed. For example:
(use-modules (ice-9 popen)) |
Here, the interface specification is (ice-9 popen), and the
result is that the current module now has access to open-pipe,
close-pipe, open-input-pipe, and so on (see section 31.3.5 Included Guile Modules).
Note in the previous example that if the current module had already
defined open-pipe, that definition would be overwritten by the
definition in (ice-9 popen). For this reason (and others), there
is a second variation of interface specification that not only names a
module to be accessed, but also selects bindings from it and renames
them to suit the current module's needs. For example:
(use-modules ((ice-9 popen)
:select ((open-pipe . pipe-open) close-pipe)
:renamer (symbol-prefix-proc 'unixy:)))
|
Here, the interface specification is more complex than before, and the result is that a custom interface with only two bindings is created and subsequently accessed by the current module. The mapping of old to new names is as follows:
(ice-9 popen) sees: current module sees: open-pipe unixy:pipe-open close-pipe unixy:close-pipe |
This example also shows how to use the convenience procedure
symbol-prefix-proc.
spec can be a list of symbols, in which case it names a module whose public interface is found and used.
spec can also be of the form:
(MODULE-NAME [:select SELECTION] [:renamer RENAMER]) |
in which case a custom interface is newly created and used.
module-name is a list of symbols, as above; selection is a
list of selection-specs; and renamer is a procedure that takes a
symbol and returns its new name. A selection-spec is either a symbol or
a pair of symbols (ORIG . SEEN), where orig is the name in
the used module and seen is the name in the using module. Note
that seen is also passed through renamer.
The :select and :renamer clauses are optional. If both are
omitted, the returned interface has no bindings. If the :select
clause is omitted, renamer operates on the used module's public
interface.
Signal error if module name is not resolvable.
module-name and use its system
transformer as the system transformer for the currently defined module,
as well as installing it as the current system transformer.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| webmaster donations bookstore | delorie software privacy |
| Copyright © 2003 by The Free Software Foundation | Updated Jun 2003 |