Ceci n'est pas une value (was Re: [R6RS] "void" or "unspecific")

Anton van Straaten anton at appsolutions.com
Wed May 3 12:05:37 EDT 2006

Michael Sperber wrote:
> I know a number of Scheme systems use "void."  I assume this was to
> allude to C's "void" type, which means "no return value."  However, in
> the multiple-value world (especially now that continuations created by
> `begin' accept any number of values), the idiom for "no return value"
> is (values), not a "value meaning no value."  That's why I believe
> "unspecific" would be a more appropriate choice.

I share the reservations about "void", but I also dislike the term 
"unspecific" in this context.  It seems to be trying to communicate 
"this value is not a specific value", which is unnecessarily 
thought-provoking (although perhaps the R6RS could reference Magritte[1] 
to justify this choice).

The value in question is itself a specific value, but it denotes that a 
value was not specified.  A good term for this would be "unspecified", 
and of course that is the term used throughout R5RS, with the exception 
of one usage in 7.3 ("the expression (if #f #f) is used to obtain an 
unspecific value").

I wondered whether I could rephrase my argument above in favor of 
"unspecific", but what I end up with is something like "a specific value 
was not provided", which for me still does not translate to "unspecific".

Other reasons I prefer "unspecified" are:

1. It has precedent beyond Scheme - terms and phrases like "unspecified 
value" or "the result is unspecified" are used in various CS and PL 
contexts.  There's also precedent in Larceny, SCM, Chicken, and Guile.

2. The English meaning of "unspecific" has connotations such as "broad" 
and "vague" which are not entirely appropriate here.



More information about the R6RS mailing list