Wiki
Download
Manual
Eggs
API
Tests
Bugs
show
edit
history
You can edit this page using
wiki syntax
for markup.
Article contents:
== Outdated egg! This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for [[/eggref/5/module-declarations|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 [[https://wiki.call-cc.org/chicken-projects/egg-index-5.html|egg index]]. Otherwise, please consider porting this egg to the current version of CHICKEN. [[tags: egg]] == module-declarations [[toc:]] == Description Extends CHICKEN's [[/man/4/Declarations|declaration]] mechanism with forms for controlling modules, imports and exports. The source for this egg is available [[https://git.foldling.org/chicken-module-declarations.git|here]]. === Requirements * [[matchable]] == 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|{{module}}]], [[#import|{{import}}]], and [[#export|{{export}}]]. These correspond to the [[/man/4/Modules|module forms]] of the same names. ==== module [declaration specifier] (module name) Wraps the current file in a [[/man/4/Modules#module|{{(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 [[/man/4/Non-standard macros and special forms#require-extension|{{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 [[/man/4/Non-standard macros and special forms#require-extension-for-syntax|{{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 [[/man/4/Modules#export|export]]. If no {{module}} is declared, this specifier has no effect. === Example <enscript highlight="scheme"> (declare (module alphabet-soup) (import abc def ghi) (export uvw xyz)) ; module content follows... </enscript> == Author [[/users/evan-hanson|Evan Hanson]] == License 3-Clause BSD
Description of your changes:
I would like to authenticate
Authentication
Username:
Password:
Spam control
What do you get when you subtract 13 from 4?