sunterlib/s48/module-system
Anthony Carrico b6af6f686f Use install lib version 1.2.0. 2005-07-08 02:12:13 +00:00
..
AUTHORS
BLURB
NEWS Adjust version number in NEWS 2004-03-27 08:01:43 +00:00
README Add loading instructions 2004-03-27 07:44:22 +00:00
overlapping-imports.scm
packages.scm Moved package and interface definition to packages.scm. Generate load scripts. 2004-03-14 22:59:57 +00:00
pkg-def.scm Use install lib version 1.2.0. 2005-07-08 02:12:13 +00:00
rt-module.scm

README

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.