wiki:FactoringModuleProposals
Last modified 19 months ago Last modified on 10/28/2010 02:55:47 PM

Factoring Module Proposals

This is an attempt to factor R6RS, ModulesShinn, the library and module parts of ModulesAndPackagesArcfide, and ModulesGanz into features that they have or don't have, to make decisions easier. I have neglected purely syntactic features like the names and ordering constraints of forms and keywords. I've added columns for a few existing Schemes.

Featurer6rsshinnhsu-libraryhsu-moduleganzchickenchezPLT
Module typeStaticStaticSyntacticSyntacticSyntacticSyntacticSyntacticStatic
Top-level onlyYesYesYesNoNoYesNoYes
NameListListListIdentifierIdentifierIdentifierIdentifier
Anonymous self-importing modulesNoNoNoYesYesNoYes
File inclusion within moduleIn most casesYesYesYesNoYesYesYes
BodyImplicitExplicitImplicitImplicitImplicitImplicitImplicit
Exports syntax forms?YesYesYesYesYesYesYesYes
Import qualifiers: only except rename prefixYesYesYesYesYesYesYes (also strip prefixes)
Rename on exportYesYesYesYesNoNoNo
Macros can generate modulesNoNoUnclearYesUnspecified restrictionsYesYesNo
Support for co-exportNoNoYesYesNoNoNo
Implicit exportsAutomaticMust be explicitAutomatic/Overridable?Automatic/Overridable?Automatic/Overridable?Must be explicit???
Import into REPLNoYesYesYesYesYesYesYes
PhasingYesNoNoNoNoPartialUnclear
VersioningYesNoNoNoNoNoNo
Strict subset of R6RSObviouslyYesYesNoNoNoNoNo
Supports parameterization of modules by importsNoNoNoNoYesNoNoYes

The difference between R6RS and R6RS-- is that R6RS-- does not have phasing or versioning.