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 #494
cc
changetime
2013-07-07 03:20:44
component
WG1 - Core
description
John David Stone writes:
The `include` and `include-ci` syntaxes and the `load` procedure [...] don't belong in Scheme. They undermine the model of modular design and construction of programs that the library system so carefully promotes. Even if I never mention them, students will find out about them, use them inappropriately, and promptly confuse themselves and their lab partners.
id
494
keywords
milestone
owner
alexshinn
priority
major
reporter
cowan
resolution
wontfix
severity
status
closed
summary
Including/loading doesn't belong in Scheme
time
2013-05-12 23:20:17
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
494
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
494
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
494
time
2013-07-07 03:20:44
Change at time 2013-05-12 23:29:12
author
cowan
field
comment
newvalue
As for `load`, it has been part of Scheme since R3RS, and is equivalent to doing your own reading and `eval`-ing. To argue against it on principle is to argue against `eval` (which historically was not actually specified until R5RS, though in fact available in all implementations since the beginning). That is an argument that all Schemers respect: if it must be enforced, however, this can best be done outside the language.
It might be a good feature for an implementation to warn the programmer if the argument to `load` is a constant expression, and even suggest the use of `include` instead.
oldvalue
2
raw-time
1368376152631813
ticket
494
time
2013-05-12 23:29:12
Change at time 2013-05-12 23:25:11
author
cowan
field
comment
newvalue
I assume that the reference is to `include` and `include-ci` as general expression types (section 4.1.7), rather than as library declarations. In the latter role, they clearly promote rather than undermining modularity, by allowing code to be managed separately from its module wrapper, something not possible in R6RS without auxiliary and non-standard syntax-rules macros.
I agree that these expression types, though convenient for the working programmer, are pedagogically problematic. I believe, however, that the Racket approach of providing controlled sublanguages for students is appropriate here. In the alternative (as I believe Gambit may be going to do), these may simply be omitted from an implementation and the fact reported as a deviation from R7RS-small.
oldvalue
1
raw-time
1368375911296401
ticket
494
time
2013-05-12 23:25:11