[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Minor last-minute issues



Regarding square brackets....

John Cowan:
> R6RS imposes this requirement, but R7RS does not.

True, but since treating [] as a synonym for () *IS* in R6RS, a large number of Scheme implementations (20!!) implement [] as synonyms for ().  And since R6RS imposes it, I believe there's a fair amount of code that uses it.  I think that many implementations will continue to support [] as a synonym for (), in part because of the amount of code that uses it.

> You can't just say "Brackets mean what
> they mean in Scheme", because there is and will be no unified meaning.

By intent, the current draft SRFI-105 spec simply doesn't define unprefixed brackets at all. Different Scheme implementations do different things, as you've already noted.  Other Lisps do other things too, for example, Arc has a completely different meaning for [...].  So I believe the spec should *not* impose any particular meaning on unprefixed [...]; there are too many cases where established code requires a particular (but varying) meaning.

If someone wants that to have a specific meaning for unprefixed [], I think that should be part of a different spec.  I don't think we need to require any particular definition of [...] to meet our goals.  Even more importantly, I think trying to force one meaning would greatly *decrease* adoption.

> Since you're providing a full implementation modulo the change to
> the readtable, you need to make some decision for the purposes of that
> implementation, and it's not clear to me what it should be.

The demo implementation implements [] as a synonym for (); see the code for underlying-read.  I think this is far more widely used meaning, and it makes sense as a demo.  But it's not a requirement of the spec; it's just a fact about the demo.  (The demo implements basically an R5RS reader plus a few R6RS extras and other extensions, in an effort to make it "useful enough" as a demo.)

The intent is that people would modify their readers to implement SRFI-105, at which point, [...] will do whatever their reader already does.

--- David A. Wheeler