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