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.

Ticket 114: Require hygienic implementation of standard macros

2011-04-17 02:05:53
WG1 - Core
alexshinn
major
cowan
worksforme
source
closed
2010-12-22 07:05:56
defect

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.

descriptionFor 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.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.

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.

resolutionworksforme
statusnewclosed

R5RS actually does require this: see opening words of 4.2. Closing this.