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.
Feature |
r6rs |
shinn |
hsu-library |
hsu-module |
ganz |
chicken |
chez |
Module type |
Static |
Static |
Syntactic |
Syntactic |
Syntactic |
Syntactic |
Syntactic |
Top-level only |
Yes |
Yes |
Yes |
No |
No |
Yes |
No |
Name |
List |
List |
List |
Identifier |
Identifier |
Identifier |
Identifier |
Anonymous self-importing modules |
No |
No |
No |
Yes |
Yes |
No |
Yes |
File inclusion within module |
In most cases |
Yes |
Yes |
Yes |
No |
Yes |
Yes |
Body |
Implicit |
Explicit |
Implicit |
Implicit |
Implicit |
Implicit |
Implicit |
Exports syntax forms? |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Import qualifiers: only except rename prefix |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes (also strip prefixes) |
Rename on export |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
Macros can generate modules |
No |
No |
Unclear |
Yes |
Unspecified restrictions |
Yes |
Yes |
Support for co-export |
No |
No |
Yes |
Yes |
No |
No |
No |
Implicit exports |
Automatic |
Must be explicit |
Automatic/Overridable |
Automatic/Overridable |
Automatic/Overridable |
Must be explicit |
??? |
Import into REPL |
No |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Phasing |
Yes |
No |
No |
No |
No |
Partial |
Unclear |
Versioning |
Yes |
No |
No |
No |
No |
No |
No |
Strict subset of R6RS |
Obviously |
Yes |
Yes |
No |
No |
No |
No |
Import identifier without regard to module |
No |
No |
No |
No |
Yes |
No |
No |
The difference between R6RS and R6RS-- is that R6RS-- does not have phasing or versioning.