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.
Source for ticket #482
cc
changetime
2013-07-07 03:20:44
component
WG1 - Core
description
Sam Tobin-Hochstadt writes:
The module system is pointlessly inflexible, and requires additional boilerplate beyond that in R6RS and other existing implementation-specific module systems. Rather than lifting the restrictions present in other systems, it adds more, necessitating terrible additions such as `include`.
id
482
keywords
milestone
owner
alexshinn
priority
major
reporter
cowan
resolution
wontfix
severity
status
closed
summary
Module system is pointlessly inflexible
time
2013-05-12 22:16:35
type
defect
Changes
Change at time 2013-07-07 03:20:44
author
cowan
field
comment
newvalue
The WG decided by unanimous consent to take no action on this ticket.
oldvalue
3
raw-time
1373142044410382
ticket
482
time
2013-07-07 03:20:44
Change at time 2013-07-07 03:20:44
author
cowan
field
resolution
newvalue
wontfix
oldvalue
raw-time
1373142044410382
ticket
482
time
2013-07-07 03:20:44
Change at time 2013-07-07 03:20:44
author
cowan
field
status
newvalue
closed
oldvalue
new
raw-time
1373142044410382
ticket
482
time
2013-07-07 03:20:44
Change at time 2013-05-12 22:24:20
author
cowan
field
comment
newvalue
As for additional boilerplate, only a little is actually required. You can convert an R6RS module into the draft's module language by changing `library` to `define-library` and wrapping everything except the `import` and `export` declarations into a `begin` library declaration. (Of course, this assumes that the implementation provides both R6RS and R7RS modules for import on equal terms, as Sagittarius Scheme does.)
The draft's design provides the freedom to merge module interface and implementation seamlessly, as R6RS does, or to completely separate them, as Scheme48 does. This is in my view an ''excellent'' example of where the draft has lifted restrictions rather than imposing them.
oldvalue
2
raw-time
1368372260615014
ticket
482
time
2013-05-12 22:24:20
Change at time 2013-05-12 22:19:07
author
cowan
field
comment
newvalue
The R6RS module system is likewise basically static. The only way to extend it is through the use of syntax-case macros, which were considered to be too complex and controversial for R7RS-small. Note that `include`, however terrible (and I don't think it is) is possible in the R6RS system, but not in a way that any static tool can analyze without making arbitrary presumptions. Static analysis of R7RS modules is straightforward, as is extensibility at the level of the implementation. Not everything in Scheme has to be maximally flexible.
oldvalue
1
raw-time
1368371947589830
ticket
482
time
2013-05-12 22:19:07