chickadee » module-declarations

Outdated egg!

This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.

If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.

module-declarations

Description

Extends CHICKEN's declaration mechanism with forms for controlling modules, imports and exports.

The source for this egg is available here.

Requirements

Usage

module-declarations should be loaded as a compiler extension with the -extend (or -X) flag to csc:

   $ csc -extend module-declarations <file>

API

When extended, module-declarations adds three declaration specifiers, module, import, and export. These correspond to the module forms of the same names.

module

[declaration specifier] (module name)

Wraps the current file in a (module ...) form.

Modules declared in this way implicitly import the scheme and chicken units before any others.

If more than one module declaration is provided, the one appearing last takes precendence.

import

[declaration specifier] (import library ...)

Loads the given libraries into the current module using require-extension semantics.

If no module is declared, this specifier has no effect.

import-for-syntax

[declaration specifier] (import-for-syntax library ...)

Loads the given libraries into the current module using require-extension-for-syntax semantics.

If no module is declared, this specifier has no effect.

export

[declaration specifier] (export identifier ...)

Registers the given identifiers as exports of the current module, as with export.

If no module is declared, this specifier has no effect.

Example

(declare (module alphabet-soup)
         (import abc def ghi)
         (export uvw xyz))

; module content follows...

Author

Evan Hanson

License

3-Clause BSD