Hi John, John Cowan <co...@ccil.org> writes:
> On Tue, Aug 28, 2018 at 11:40 AM Mark H Weaver <m...@netris.org> wrote: > > That's the phrase used in R7RS-small, which fails to define it, as you > noted, but that shortcoming is limited to R7RS. > > The relevant sentences in R5RS and R7RS are identical: " If <test> > yields a false value and no <alternate> is specified, then the result > of the expression is unspecified." Likewise, the paragraph from 1.3.2 > you quote below is identical in both standards. So either they both > define it or they both don't. Good point, you're absolutely right about that. I confess that I didn't bother to check R7RS carefully, because I simply assumed that you had good knowledge of it. I only looked carefully at R5RS and R6RS, but I guess we came to different conclusions from the same text. > In R6RS, section 11.4.3 (Conditionals) provides this example: > > Unlike Wil Clinger, and apparently you, I don't believe that examples > in specs are normative. But setting that aside for the moment: > > I take the use of the singular form of "value" here to imply that it > returns only one value. > > In R6RS 11.13, vector-set! is said to return unspecified values (note > plural), but in the examples appears "⇒ unspecified", showing that > this notation can be used where multiple unspecified values (or zero > values) are allowed. This is also a good point. This looks like a mistake to me in R6RS. Someone should probably notify them. Anyway, these ambiguities in the informal descriptions underline the importance of formal semantics. Thankfully, the core constructs are unambiguously described by them in the standards, including 'if'. Thank you for your tireless efforts to promote Scheme standardization, and also for helping me break through stone walls that were placed in my way during the R7RS-small process. I'm grateful for your work. Mark