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