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 #114
cc
changetime
2011-04-17 02:05:53
component
WG1 - Core
description
That is, the standard syntax forms must be implemented as if they used hygienic macros; it is not actually required that they use them. For example, `(let ((eqv? #f)) (case ...))` should not throw an error of the form "#f is not a procedure". A few Schemes, notably Bigloo, have this problem today.
Neither R5RS nor R6RS requires this, but I think the Principle of Least Astonishment does.
id
114
keywords
milestone
owner
alexshinn
priority
major
reporter
cowan
resolution
worksforme
severity
status
closed
summary
Require hygienic implementation of standard macros
time
2010-12-22 07:05:56
type
defect
Changes
Change at time 2011-04-17 02:05:53
author
cowan
field
comment
newvalue
R5RS actually does require this: see opening words of 4.2. Closing this.
oldvalue
3
raw-time
1302980753000000
ticket
114
time
2011-04-17 02:05:53
Change at time 2011-04-17 02:05:53
author
cowan
field
resolution
newvalue
worksforme
oldvalue
raw-time
1302980753000000
ticket
114
time
2011-04-17 02:05:53
Change at time 2011-04-17 02:05:53
author
cowan
field
status
newvalue
closed
oldvalue
new
raw-time
1302980753000000
ticket
114
time
2011-04-17 02:05:53
Change at time 2011-01-11 06:02:11
author
arcfide
field
comment
newvalue
To note, I would contend that both standards do require this behavior from the way that I read them. That is, each built-in form is expected to be referentially transparent, its behavior unchanging despite the context.
oldvalue
2
raw-time
1294696931000000
ticket
114
time
2011-01-11 06:02:11
Change at time 2010-12-23 01:24:13
author
cowan
field
comment
newvalue
oldvalue
1
raw-time
1293038653000000
ticket
114
time
2010-12-23 01:24:13
Change at time 2010-12-23 01:24:13
author
cowan
field
description
newvalue
That is, the standard syntax forms must be implemented as if they used hygienic macros; it is not actually required that they use them. For example, `(let ((eqv? #f)) (case ...))` should not throw an error of the form "#f is not a procedure". A few Schemes, notably Bigloo, have this problem today.
Neither R5RS nor R6RS requires this, but I think the Principle of Least Astonishment does.
oldvalue
For example, `(let ((eqv? equal?)) (case ...))` should not induce `case` to use `equal?` for its comparisons.
Neither R5RS nor R6RS requires this, but I think the Principle of Least Astonishment does.
raw-time
1293038653000000
ticket
114
time
2010-12-23 01:24:13