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.
Feature |
r6rs |
shinn |
hsu-library |
hsu-module |
ganz |
Module Type |
static |
static |
syntactic |
syntactic |
syntactic |
Top-level only |
Yes |
Yes |
Yes |
No |
No |
Name |
List |
List |
List |
Identifier |
Identifier |
Anonymous self-importing modules |
No |
No |
No |
Yes |
Yes |
File inclusion within module |
In most cases |
Yes |
Yes |
Yes |
No |
Body |
Implicit |
Explicit |
Implicit |
Implicit |
Implicit |
Import qualifiers: only except rename prefix |
Yes |
Yes |
Yes |
Yes |
Yes |
Rename on export |
Yes |
Yes |
Yes |
Yes |
No |
Macros can generate modules |
No |
No |
Unclear |
Yes |
Unspecified restrictions |
Support for co-export |
No |
No |
Yes |
Yes |
No |
Implicit exports |
Automatic |
Automatic |
Allowed |
Allowed |
Required |
Import into REPL |
No |
Yes |
Yes |
Yes |
Yes |
Phasing |
Yes |
No |
No |
No |
No |
Versioning |
Yes |
No |
No |
No |
No |
The difference between R6RS and R6RS-- is that R6RS-- does not have phasing or versioning.