This library provides two structures that slightly extend Scheme 48's module system:
* OVERLAPPING-IMPORTS adds checking for duplicate imports.
* RT-MODULES provides run-time access to the module system.
================================================================================
After installation, use the switch
-lel module-system/load.scm
to load this library.
================================================================================
The structure OVERLAPPING-IMPORTS extends the module system with a
facility to check for duplicates entries within the imported names of
a module. After loading the package you can add the form
(optimize overlapping-imports?)
to the definition of the structure you want to monitor, e.g.
config> (define-structure foo (export f)
(open scheme srfi-1)
(begin (define f 23))
(optimize overlapping-imports?))
; no values returned
config> ,load-package foo
Warning: Structure has undefined exports
#{Structure 153 srfi-1}
(for-each)
Warning: package has overlapping imports
#{Package 181 foo}
(assoc (srfi-1 scheme))
(for-each (srfi-1 scheme))
(member (srfi-1 scheme))
(map (srfi-1 scheme))
The structure RT-MODULES provides run-time access to the Scheme 48
module system.
(load-config-file file-name) --> unspecific
Loads config file containing structure definition. This is the same as
,config ,load file-name
in the REPL.
(reify-structure structure-name) --> rt-structure
Creates a rt-structure object representing the structure which name
STRUCTURE-NAME (a symbol).
(load-structure rt-structure) --> unspecific
Ensures that the definition of the underlying structure has been
loaded. This is the same as
,load-package structure
in the REPL.
(rt-structure-binding rt-structure name) --> value
Gets the binding for NAME (a symbol) from a rt-structure.
(lambda-interface interface-name body ...) --> value of body SYNTAX
A variation of lambda which uses the exported names from interface
INTERFACE-NAME as the names of the parameters.
(with-names-from-rt-structure rt-structure interface body ...) --> value of body SYNTAX
Evaluate body with the names from INTERFACE bound to the bindings
provided by RT-STRUCTURE.
(rt-structure->environment rt-structure) --> environment
Turns RT-STRUCTURE into an object suitable as second argument to EVAL.