[r6rs-discuss] "Unspecified"

AndrevanTonder andre at het.brown.edu
Fri Sep 22 07:46:27 EDT 2006


On Thu, 21 Sep 2006, Anton van Straaten wrote:

> One job of the R6RS is to assign meaning to such phrases.  In this example, 
> it does this by specifying that when a program omits the <alternate> term, 
> then the phrase in question returns a value which denotes that no value was 
> specified by the program at that point.

But a value /is/ specified by the program at that point according to r6rs
(namely the value #<unspecified>).

If I write my program so that it 
intentionally returns #<unspecified> if 5 is odd, and #t if 5 is not odd, 
does this mean that the output of my program does not specify that 5 is 
odd?

In fact, the whole point of "unspecified" in r5rs was that I could *not* use 
the program

      (if (even? 5)
          #t))

to determine whether 5 was odd, since the value of this expression, being 
unspecified, could in fact have been #t.  In r6rs I can tell whether it is odd 
from the output, which seems to contradict your assertion that "no value was 
specified by the program".

I'm smelling a liar's paradox.  If one wants to avoid being circular, 
one could say that:

"the *r6rs* expression in question returns a (specified) value which denotes 
that no return value was specified in *r5rs* for the expression."

So maybe #<unspecified-by-r5rs> would be a more accurate name for it ;-)

This would be a weird way to write a language specification, so I would just 
call it something else instead.

Cheers
Andre



More information about the r6rs-discuss mailing list