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