This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home. For a version of this page that may be more recent, see FactoringModuleProposals in WG2's repo for R7RS-large.

Factoring­Module­Proposals

aag
2010-10-29 01:55:47
11formatting headershistory
source

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.

Feature

r6rs

shinn

hsu-library

hsu-module

ganz

chicken

chez

PLT

Module type

Static

Static

Syntactic

Syntactic

Syntactic

Syntactic

Syntactic

Static

Top-level only

Yes

Yes

Yes

No

No

Yes

No

Yes

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

Yes

Body

Implicit

Explicit

Implicit

Implicit

Implicit

Implicit

Implicit

Exports syntax forms?

Yes

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

No

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

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

No

Supports parameterization of modules by imports

No

No

No

No

Yes

No

No

Yes

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